没有见证的SQL Server数据库镜像

时间:2010-10-21 16:36:15

标签: sql-server sql-server-2005 sql-server-2008 mirroring

我在两台不同的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)“

此外,一旦主服务器出现故障,我无法将镜像数据库设为主数据库,因为它不允许我从镜像服务器执行此操作。

我确信我做错了什么。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您希望自动进行故障转移,但无法通过见证进行自动故障转移。鉴于从任何廉价/老化硬件运行的任何SQL Express实例都可以充当证人,我强烈建议您添加见证并具有自动故障转移,而不是必须进行手动故障转移,以防主要丢失

答案 1 :(得分:0)

我认为你正在寻找这样的东西(在镜子上运行):

ALTER DATABASE dbName SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS GO