I've got a database that is mirrored using SQL 2008 Mirroring.
I have a java application, running on Linux, using the Microsoft SQL type 4 JDBC drivers.
I have this setup duplicated as a QA environment.
On my QA environment, when I manually fail over the database, providing a successful connection had already been made, the failover was completely transparent. I did not have to implement anything in order to get the application to talk to the new Principle (Old mirror).
In the live environment however, the connections stop working once I have manually failed over.
There are quite a few things different between the live and QA environments, but not anything I'd consider fundamental to this process, communication between databases is all very localised in both situations and there are no firewalls (Except the ones built into Windows Server 2008) between my java app and the Windows boxes running SQL 2008.
Does anyone have any ideas about how I can go about diagnosing this issue? Or can anyone tell me how this failover transparency occurs so I can work out how to diagnose this myself?
What mechanisms are used by SQL Server 2008 Mirroring to notify a driver that the primary has failed over?
1.5k views Asked by Matt Fellows At
1
There are 1 answers
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in SQL-SERVER-2008
- Why does the following script throw database still in use when selecting the master database first?
- Return Duplicate Rows
- SQL Data entry - finding sequence to enter info
- Why is this query in SSMS showing columns/tables as numbers?
- Query from multiple tables based on the table name?
- How to Let Python Connect to a SQL Server Database
- Need to fetch Minimum value for Each Id and make the BidSuccess column to 1
- Spring Boot Scheduled Annotation Job Issue
- Use different WHERE clause based on condition?
- Error when inserting special characters such as Ñ and accents á, é, í, ó, ú. using BULK OPENROWSET from python
- Delete all records except the max value of a group
- How to use SQL Server stored procedures in React js express server
- Loop through date in SQL Server and exclude the dates within a range of one week
- Find amount greater than the average amount
- Update trigger - both INSERTED and DELETE hold same value after update
Related Questions in JDBC
- Hibernate ClobJdbcType bindings: what are the diferences?
- Update a MySQL row depending on the ID in Google Sheets Apps Script
- How RowSet works java?
- java ee jdbc jstl servlet connection to db
- VSCode Libraries not showing for New Java Project
- Is there any guide online on how to correctly map the sakila database using Java and hibernate?
- Java cancel task running Oracle query through JDBC - connection broken because of SQLSTATE(08006), ErrorCode(17002) IO Error: Socket read interrupted
- Ibm Db2 Jdbc Connection
- How to connect to mysql inside a Kubernetes cluster?
- How to specify multiple databases when connecting to DolphinDB Server with JDBC interface?
- Connecting to MS SQL DB from Java thows error
- Access denied for user 'root'@'localhost' (using password: YES) in eclipse when connecting with jdbc
- databricks / pycharm sql connection
- How to correctly insert a jsonb into postgresql using a Java PreparedStatement
- How to query jsonb column with spring data
Related Questions in DATABASE-MIRRORING
- Exception during db mirroring failover to SQL Server 2022 from previous version
- GCP Database migration service for Postgres - how to migrate a database with a name other than "postgres"?
- MySQL Replication VS Mirroring and how to do both?
- How to do Delayed Replication on MySQL 8?
- Sending SQL alert when WITNESS is disconnected
- How to do mirroring or replication in table level in SQL Server with SQL Query
- The Mirror Monitoring Log contains a gap of several hours - why?
- 'distributor_admin' is not defined as a remote login at the server, login failed for user 'distributor_admin'
- SQL Server 2016 Standard - High performance (async) mirroring
- Using DFS-R instead of mirroring on SQL Server
- Set database to single user mode for database involved in database mirroring session or an availability group
- Mirror Relational Databases to RethinkDB?
- SQL How to make principle db mirror and mirror db principle
- An error occurred in a Service Broker/Database Mirroring transport connection endpoint, Error: 8474, State
- How to set up database mirroring and failover?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
This behaviour is handled by the SQL Server provider as part of the Client Redirect behaviour. This was part of the SQL Server 2005 JDBC (Java Database Connectivity) 1.1 Driver, I'm unsure if that provider was directly used for the new type 4 drivers though?
In your live environment, is your application successfully connecting to the primary server before it fails over, so it is able to cache the failover partner and make use of that when the failover occurs?
To be sure, you can explicitly state the failover partner in the connection string, which is the recommended practice:
jdbc:sqlserver://serverA:1433; databaseName=AdventureWorks; integratedSecurity=true; failoverPartner=serverBThe full documentation of the redirect behaviour can be found here.
The addition of the failover documentation here suggests that it could be a manual consideration.