SQL Server“应用程序意图=只读”不工作 JDBC

Doc*_*day 5 java sql-server jdbc sql-server-2012

我正在尝试使用"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(); 
Run Code Online (Sandbox Code Playgroud)

小智 3

您应该连接到可用性组侦听器 (AGL) 地址。您可以使用以下查询来查找可用性组侦听器地址:

select * from sys.availability_group_listener_ip_addresses 
Run Code Online (Sandbox Code Playgroud)

找到 AGL 地址后,您的 jdbc 连接字符串应该是:

jdbc:sqlserver://[AGL-ADDRESS]:1433;databaseName=[DB_NAME];user=[username];password=[password];applicationIntent=ReadOnly
Run Code Online (Sandbox Code Playgroud)