我正在尝试使用连接字符串中的
"ApplicationIntent=readonly"
来访问 sql server 2012 DB 上的辅助节点。
它仍然命中主节点,不知道为什么。
我正在使用
sqljdbc4-4.0
罐子
java JDBC 调用:
ResultSet results = null;
PreparedStatement preparedStatement = null;
Connection conn = null;
String SQL_SERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
Class.forName(SQL_SERVER_DRIVER);
String dbString = "jdbc:sqlserver://*****;applicationIntent=ReadOnly;databaseName=****;user=*****;password=****;";
conn = DriverManager.getConnection(dbString);
preparedStatement = conn.prepareStatement("some_sql");
results = preparedStatement.executeQuery();
您应该连接到可用性组侦听器 (AGL) 地址。您可以使用以下查询来查找可用性组侦听器地址:
select * from sys.availability_group_listener_ip_addresses
找到 AGL 地址后,您的 jdbc 连接字符串应该是:
jdbc:sqlserver://[AGL-ADDRESS]:1433;databaseName=[DB_NAME];user=[username];password=[password];applicationIntent=ReadOnly