【问题标题】:Azure SQL DB: Failover secondary DB is read-onlyAzure SQL DB:故障转移辅助数据库是只读的
【发布时间】:2020-02-05 09:51:35
【问题描述】:

提前谢谢你...

我创建了一个故障转移组并想测试故障转移。我通过故障转移组选项卡强制进行故障转移,它说它成功并且辅助数据库现在是主数据库。但是,当我尝试写入它时,我收到了这个错误:

错误:

[Microsoft][ODBC SQL Server Driver][SQL Server]无法更新数据库“PTextingDvlp”,因为该数据库是只读的。

我的理解是,一旦辅助数据库成为主要数据库,它就是读/写的。

有人知道这是什么原因吗?

【问题讨论】:

    标签: database azure azure-sql-database


    【解决方案1】:

    当您选择将 failoverAzure SQL 一起使用时,您可能不会注意到 connectionstring 发生了变化。

    因此您需要使用正确的连接字符串,它指向读/写侦听器端点

    您可以在您的 azure 门户中找到此内容:

    Dashboard > All resources > yourgeoname - Failover groups > yourgeoFailover
    

    滚动到底部,您将看到 Read/Write 侦听器端点和 Read-only 侦听器端点。

    更改您的连接字符串以使用其中之一,如果您想写入然后选择读/写之一。无论使用哪种故障转移,这将始终指向活动数据库。

    此外,如果您需要简单地读取数据,那么您可以使用只读连接字符串作为负载平衡。从而减少 Read/Write 数据库的负载。

    【讨论】:

    • 为了澄清,您需要将连接字符串中的端点从 myserver.database.windows.net(其中 myserver 是原始 sql 服务器)更改为故障转移组!所以,myserverfo.database.windows.net。这对我来说并不清楚,但亚历克斯斯蒂芬斯让我找到了我可以弄清楚的地方。谢谢亚历克斯!
    【解决方案2】:

    当您进行故障转移时,正如您所提到的,主数据库变为辅助数据库并且也是只读的。由于故障转移,到新主节点的连接字符串发生更改。

    很有可能您的连接字符串仍然指向现在只读的原始数据库。

    解决方案:请检查您是否已更新连接字符串以指向新的主节点以便能够进行更新。

    参考Active geo-replication and auto-failover groups

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 2016-09-23
      • 1970-01-01
      • 2018-03-15
      • 2021-10-03
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多