我有两个镜像 SQL Server(例如 A 和 B)。
我写了一个简单的 C# 程序(通过 SqlConnection
连接),它将行插入到数据库中。当我在服务器A上进行故障转移时,程序抛出异常,然后我尝试重新连接,并通过超时得到异常(**与服务器成功建立连接,但在登录前握手期间发生错误。 (提供商:SSL 提供商,错误:0**
)。
当我重新启动应用程序时,连接已成功建立(到服务器 B)。接下来,我在 B 服务器上进行故障转移,程序抛出异常,然后我尝试重新连接,它的工作 - 连接到 A witout 重新启动程序。
我的连接字符串:
Data Source=SERVER_A;Failover Partner=SERVER_B;Initial Catalog=TEST_DB;persist security info=True;user id=USER_LOGIN;password=USER_PASS;Connection Timeout=60;
我也尝试设置大超时(60 秒),并尝试清除所有 sqlconnection 池,按连接清除单个池,但它不起作用。
有趣的事实:如果我使用域登录名和密码,一切正常! (用户SID相同)
最佳答案
很难说出您的确切问题是什么。也许是故障转移不是即时的,并且无法传输查询状态 - 请参阅 https://dba.stackexchange.com/questions/27528/can-availability-groups-provide-seamless-failover-with-no-query-failures .如果您的应用程序立即重试查询,则故障转移节点可能仍处于接管过程中,因此尚未准备好接受连接。
关于c# - 故障转移后连接到镜像数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548171/