AlwaysON SQL Server 2014 应用程序异常:无法更新数据库,因为数据库是只读的

Posted

技术标签:

【中文标题】AlwaysON SQL Server 2014 应用程序异常:无法更新数据库,因为数据库是只读的【英文标题】:AlwaysON SQL Server 2014 Application exception: Failed to update database because database is readonly 【发布时间】:2015-10-09 09:18:20 【问题描述】:

我们有两个节点可用性组。这两个节点是 SQL cluster1- node1SQL cluster 2- node2 以及一个可用性组侦听器。 Java 应用程序正在连接到此侦听器,最初一切正常,即应用程序能够对数据库执行读/写操作,直到我们进行故障转移。

连接器字符串是driverURL=jdbc:jtds:sqlserver://[Listerner DNS Name]:[Port]/[Database]

假设最初 node1 是主要的,node2 是次要的。 故障转移后,node1 成为辅助节点,node2 成为主节点。现在应用程序仍然能够连接到数据库,但只能对数据库执行读取。如果我们尝试在该 DB 上进行插入,应用程序会抛出异常(在标题中提到)。

基本上,我需要的是应用程序能够始终执行读/写,而不管哪个节点是主节点。有什么想法吗?

【问题讨论】:

【参考方案1】:

当连接字符串指向侦听器时,您应该没有理由获得只读数据库。这就是avail grp 监听器的重点——将流引导到读/写(主)数据库。 Ping DNS 名称并检查它是否解析到侦听器(在 AG 故障转移之前和之后)。不幸的是,我不使用 Java,因此无法进一步帮助您。干杯,马克。

【讨论】:

以上是关于AlwaysON SQL Server 2014 应用程序异常:无法更新数据库,因为数据库是只读的的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2014 alwayson 可用性组 特性

翻译:到AlwaysOn级别1的楼梯:什么是“SQL Server AlwaysOn”?

AlwaysON SQL Server 2014 应用程序异常:无法更新数据库,因为数据库是只读的

永远的阶梯1级:什么是“SQL Server AlwaysOn”?

SQL Server的AlwaysOn错误19456和41158

翻译(十五)-----通往1级楼梯:什么是“SQL Server AlwaysOn”