我在两台不同的SQL Server计算机上为我的数据库设置了SQL Server 2005的数据库镜像。这里没有使用见证服务器。我还在我的数据库的主服务器和镜像服务器上分别看到“Principal / Synchronized”和“Mirror,Synchronized / Restoring”状态。
现在我想测试镜像服务器的故障转移是否正常。所以我写了一个像下面这样的小型控制台应用程序。
try
{
SqlConnection cn = new SqlConnection("data source=PRIMARYSQL1;Failover Partner=MIRRORSQL1;initial catalog=TESTDB;Integrated Security=SSPI;");
SqlCommand cm = new SqlCommand("insert into department(name) values('Dept10')", cn);
cn.Open();
cm.ExecuteNonQuery();
}
然后我关闭了主服务器上的Linux服务器和SQL代理服务,我希望我的控制台应用程序仍能正常工作,但是我得到了以下错误。
“建立连接时发生与网络相关或特定于实例的错误 ction到SQL Server。服务器未找到或无法访问。验证 实例名称正确,并且SQL Server配置为允许远程 连接。 (提供者:命名管道提供者,错误:40 - 无法打开连接 ction to SQL Server)“
此外,一旦主服务器出现故障,我无法将镜像数据库设为主数据库,因为它不允许我从镜像服务器执行此操作。
我确信我做错了什么。任何人都可以帮助我吗?
答案 0 :(得分:2)
您希望自动进行故障转移,但无法通过见证进行自动故障转移。鉴于从任何廉价/老化硬件运行的任何SQL Express实例都可以充当证人,我强烈建议您添加见证并具有自动故障转移,而不是必须进行手动故障转移,以防主要丢失
答案 1 :(得分:0)
我认为你正在寻找这样的东西(在镜子上运行):
ALTER DATABASE dbName SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS GO