2015-11-05 17 views
0

我设置了镜像数据库(计算机名称:SQL-Prim,SQL-Mirr,域名:sql-1.ooo.org,sql-2.ooo。 ORG)。 我没有AD,我使用公共IP地址和域名进行配置。 我编写了一个C#应用程序来测试故障转移行为。 连接字符串是这样的:手动故障转移后,C#应用程序无法连接到镜像SQL Server

data source=sql-1.ooo.org;Failover Partner=sql-2.ooo.org;initial catalog=TestDB;User Id={0};Password={1};App=EntityFramework 

C#应用程序是不断更新的数据:

while (true) 
{ 
    try 
    { 
    using (TestEntities context = new TestEntities()) 
    { 
     //update data 
    } 
    } 
    catch (Exception ex) 
    { 
    //log error 
    } 
    System.Threading.Thread.Sleep(1000); //sleep for a while 
} 

在开始时,应用程序连接到SQL-普里姆并运行良好。 当我从SQL-普里姆到SQL-MIRR手动故障转移时,程序会抛出异常:

"The underlying provider failed on Open." 

如果我重新启动应用程序,它连接到SQL-镜像和运行良好。然后,我再次从SQL-Mirr手动故障转移到SQL-Prim。该应用程序运行良好。如果我从SQL-Prim手动故障切换到SQL-Mirr,应用程序将再次抛出相同的异常。

我尝试在测试应用程序的计算机上将SQL-Mirr的IP地址添加到“C:\ Windows \ System32 \ drivers \ etc \ host”。 该应用程序运行良好。我可以任意故障转移2个DB,没有任何错误。

我很困惑这个问题。 有没有想法避免更改主机文件? 感谢您的帮助。

回答

0

您需要在DTC配置中启用“允许远程客户端”。

相关问题