我安装了Server 2008 R2。它包含三个实例。
所有这些都是以网络服务登录。
默认实例是主体服务器,第一个实例是镜像,第二个实例是Witness server
最初,我对主体数据库进行了完全备份和事务日志备份。通过保留相同的数据库名称将其还原到第一个实例,恢复状态为“不-恢复”
最后,我启动了镜像,并得到了如下所示的两条错误消息。


发布于 2012-09-07 16:52:56
尝试一些基本的连接测试。
从命令行:
netstat -an
在我的服务器上,你可以看到5022在监听。
接下来,请确保您可以通过telnet连接到这些端口。
telnet fully-qualified-server-name 5022正如它在镜像属性GUI的Note部分中提到的,就在见证字段的下面,服务器名必须是完全限定的tcp地址。

你应该看看黑屏。在本例中,我选择了一个会导致连接失败的名称。如果您看到“无法打开连接”,则服务器(S)定义为镜像、主体和见证无法到达,或者您没有使用正确的名称。
可以在Windows 2008的功能下添加telnet客户端。
在Windows 2008中,右键单击计算机时,可以看到计算机的全名。您也应该能够在命令行中对其进行平分。例:平梅花
请对每个Server实例运行以下查询,并将结果放在您的问题中。许多这些故障排除提示来自:http://msdn.microsoft.com/en-us/library/ms189127.aspx
SELECT type_desc, port FROM sys.tcp_endpoints;镜像端点的
SELECT state_desc FROM sys.database_mirroring_endpoints;SELECT role FROM sys.database_mirroring_endpoints;的权限
SELECT EP.name, SP.STATE,
CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))
AS GRANTOR,
SP.TYPE AS PERMISSION,
CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))
AS GRANTEE
FROM sys.server_permissions SP , sys.endpoints EP
WHERE SP.major_id = EP.endpoint_id
ORDER BY Permission,grantor, grantee;
GO来自其他服务器实例的服务帐户的登录需要连接权限。确保来自其他服务器的登录具有连接权限。要确定谁拥有端点的连接权限,请在每个服务器实例上使用以下Transact-SQL语句。
示例输出:
name STATE GRANTOR PERMISSION GRANTEE
TSQL Local Machine G sqladmin CO public
TSQL Named Pipes G sqladmin CO public
TSQL Default TCP G sqladmin CO public
TSQL Default VIA G sqladmin CO public
Mirroring G SERVERNAME\Grantor CO SERVERNAME\Grantee设保人是分配(CO)连接权限的帐户,授权者是具有连接权限的帐户。
在命令行中运行ipconfig /all并注意主机名返回的内容。
https://dba.stackexchange.com/questions/23878
复制相似问题