我正在尝试一个我认为非常简单的过程 - 在同一域内的两个 MSSQL 2008 R2 服务器之间镜像数据库。
两台服务器的配置类似,我有一个名为“archive”的数据库,我想镜像它。我对节点 1(主节点)上的数据库进行了完整和日志备份,并使用 WITH NORECOVERY 选项在节点 2 上恢复了该数据库。数据库显示在节点 2(镜像)上,并(In Recovery)
在 GUI 中列在其旁边。
我在主服务器上启动镜像向导并配置安全性。两个服务器上的两个 SQL 进程都设置为使用相同的域服务帐户启动DOMAIN\SQLService
,并且该DOMAIN\SQLService
帐户作为登录名存在于每台服务器上。按照配置安全性的步骤,我选择不需要见证服务器(至少现在还不需要),然后它设置了端点。最后,当它询问我想要使用哪个帐户连接到每个服务器时,我输入该DOMAIN\SQLService
帐户。
使用域策略将其DOMAIN\SQLService
设置为每个节点的本地管理员。
但是,当我选择“开始镜像”时,我在主体上收到以下错误:
Database mirroring connection error 4 'An error occurred while receiving data: '64(failed to retrieve text for this error. Reason: 15105)'.' for 'TCP://node-b.fqdn.example.com:5022'.
镜子上:
Database Mirroring login attempt failed with error: 'Connection handshake failed. An OS call failed: (8009030c) 0x8009030c(failed to retrieve text for this error. Reason: 15105). State 67.'. [CLIENT: 10.13.111.31]
10.13.111.31是节点B。
在阅读了所有文档后,我尝试了很多方法,但总是得到这个结果。我以为对于一个相当标准的设置来说,这是一个相当简单的过程,但显然它很难。
知道我做错了什么吗?
答案1
好的,经过长时间的睡眠、检查、喝咖啡和重新检查后,我想我找到了解决方案。
DNS。
DC 的 DNS 服务器中有一些过时的 A 记录,这导致 Node-B 对指向哪里的内容感到困惑。我修复了 DNS 以反映实际情况,然后点击“开始”......它成功了!嗯,实际上它暂停了,因为我的 Node-B 上的磁盘空间已经用完了,但除此之外,一切似乎都很好。