2

我在两台不同的 SQL Server 机器上为我的数据库设置了 SQL Server 2005 的数据库镜像。这里没有使用见证服务器。我还在我的数据库的主服务器和镜像服务器上分别看到状态“主体/同步”和“镜像、同步/恢复”。

现在我想测试到镜像服务器的故障转移是否正常工作。所以我写了一个像下面这样的小型控制台应用程序。

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();
}

然后我关闭了主服务器上的 hSQL Server 和 SQL Agent 服务,我希望我的控制台应用程序仍然可以正常工作,但我得到了以下错误。

“与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问该服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)”

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

我确定我做错了什么。谁能帮我?

4

2 回答 2

2

您期望发生自动故障转移,但没有 oa 见证无法发生自动故障转移。鉴于从任何廉价/老化硬件运行的任何 SQL Express 实例都可以充当见证人,我强烈建议您添加见证人并进行自动故障转移,而不是在主要丢失的情况下进行手动故障转移并可能丢失数据.

于 2010-10-21T18:28:27.007 回答
0

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

ALTER DATABASE dbName SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS GO

于 2010-10-21T16:41:15.127 回答