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

问题描述 投票:0回答:2

我正在尝试使用连接字符串中的

"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(); 
java sql-server jdbc sql-server-2012
2个回答
3
投票

您应该连接到可用性组侦听器 (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

0
投票

对于 DBeaver 用户:

enter image description here

enter image description here

对于复制粘贴:ApplicationIntent ReadOnly

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.