Specifying Primary and Alternate Servers
- Last Updated: May 15, 2020
- 3 minute read
- DataDirect Connectors
- JDBC
- IBM Db2 5.1
- MySQL 5.1
- Progress OpenEdge 5.1
- SAP Sybase 5.1
- Documentation
Connection information for primary and alternate servers can be specified using either one of the following methods:
- Connection URL through the JDBC Driver Manager
- JDBC data source
For example, the following connection URL for the SQL Server driver specifies connection information for the primary and alternate servers using a connection URL:
jdbc:datadirect:sqlserver://server1:1433;DatabaseName=TEST;User=test;
Password=secret;AlternateServers=(server2:1433;DatabaseName=TEST2,
server3:1433;DatabaseName=TEST3)
In this example:
...server1:1433;DatabaseName=TEST...
is the part of the connection URL that specifies connection information for the primary server. Alternate servers are specified using the AlternateServers property. For example:
...;AlternateServers=(server2:1433;DatabaseName=TEST2,server3:1433;
DatabaseName=TEST3)
Similarly, the same connection information for the primary and alternate servers specified using a JDBC data source would look like this:
SQLServerDataSource mds = new SQLServerDataSource();
mds.setDescription("My SQLServerDataSource");
mds.setServerName("server1");
mds.setPortNumber(1433);
mds.setDatabaseName("TEST");
mds.setUser("test");
mds.setPassword("secret");
mds.setAlternateServers("server2:1433;DatabaseName=TEST2, server3:1433;
DatabaseName=TEST3")
In this example, connection information for the primary server is specified using the ServerName, PortNumber, and DatabaseName properties. Connection information for alternate servers is specified using the AlternateServers property.
The SQL Server driver also allows you to specify connections to named instances, multiple instances of a Microsoft SQL Server database running concurrently on the same server. If specifying named instances for the primary and alternate servers, the connection URL would look like this:
jdbc:datadirect:sqlserver://server1\\instance1;User=test;Password=secret;
AlternateServers=(server2\\instance2:1433;DatabaseName=TEST2,
server3\\instance3:1433;DatabaseName=TEST3)
Similarly, the same connection information to named instances for the primary and alternate servers specified using a JDBC data source would look like this:
SQLServerDataSource mds = new SQLServerDataSource();
mds.setDescription("My SQLServerDataSource");
mds.setServerName("server1\\instance1");
mds.setPortNumber(1433);
mds.setDatabaseName("TEST");
mds.setUser("test");
mds.setPassword("secret");
mds.setAlternateServers("server2\\instance2:1433;DatabaseName=
TEST2,server3\\instance3:1433;DatabaseName=TEST3")
To connect to a named instance using a data source, you specify the named instance on the primary server using the ServerName property.
See Connecting to Named Instances for more information about connecting to named instances on Microsoft SQL Server.
The value of the AlternateServers property is a string that has the format:
(servername1[:port1][;property=value][,servername2[:port2]
[;property=value]]...)
or, if connecting to named instances:
(servername1\\instance1[;property=value][,servername2\\instance2
[;property=value]]
where:
servername1- is the IP address or server name of the first alternate database server, servername2 is the IP address or server name of the second alternate database server, and so on. The IP address or server name is required for each alternate server entry.
instance1- is the named instance on the first alternate database server, servername2 is the named instance on the second alternate database server, and so on. If connecting to named instances, the named instance is required for each alternate server entry.
port1- is the port number on which the first alternate database server is
listening, port2 is the port number on which the second alternate
database server is listening, and so on. The port number is optional for each alternate
server entry. If unspecified, the port number specified for the primary server is used. If a
port number is unspecified for the primary server, a default port number of
1433is used. property=value- is the DatabaseName connection property. This property is optional for each alternate server entry. For example:
jdbc:datadirect:sqlserver://server1:1433;DatabaseName=TEST;User=test;
Password=secret;AlternateServers=(server2:1433;DatabaseName=TEST2,
server3:1433;DatabaseName=TEST3)
or, if connecting to named instances:
jdbc:datadirect:sqlserver://server1\\instance1:1433;DatabaseName=TEST;
User=test;Password=secret;AlternateServers=(server2\\instance2:1433;
DatabaseName=TEST2,server3\\instance3:1433;DatabaseName=TEST3)
If you do not specify the DatabaseName connection property in an alternate server entry,
the connection to that alternate server uses the property specified in the URL for the
primary server. For example, if you specify DatabaseName=TEST for the
primary server, but do not specify a database name in the alternate server entry as shown in
the following URL, the driver tries to connect to the TEST database on the alternate
server:
jdbc:datadirect:sqlserver://server1:1433;DatabaseName=TEST;User=test;
Password=secret;AlternateServers=(server2:1433,server3:1433)