java - SQL Server "Application=Intent"不工作 JDBC

标签 java sql-server jdbc sql-server-2012

我正在尝试使用连接字符串中的“applicationIntent=ReadOnly”访问 sql server 2012 DB 上的辅助节点。

它仍在击中主节点,不知道为什么。

我正在使用 sqljdbc4-4.0 jar

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

关于java - SQL Server "Application=Intent"不工作 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356460/

相关文章:

java - JDBC 错误 : java. sql.SQLException: ORA-08002: 在此 session 中尚未定义序列

java - Dijkstra算法中的无限循环?

java - 当用户单击 AutoCompleteTextView 时,autocompletetextview 中的文本将被突出显示或删除

java - PersistenceUnit vs PersistenceContext

c# - 添加页码参数时,Report Services 在本地报告的 visual studio 调试器中崩溃

java - 使用两个事务,一个似乎有效,但另一个无效。为什么?

Java泛型?扩展克拉兹

sql-server - 为什么事实表中的 datekey 总是 INT?

sql-server - SQL Server 跟踪中如何报告对临时表的插入

sql-server - 如何为 JDBC PreparedStatement 设置 IDENTITY_INSERT 选项?