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- node1
和 SQL 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”?