Answers:
尝试一些基本的连接测试。
从命令行:
netstat -an
在我的服务器上,您可以看到5022正在监听。
接下来确保您可以通过telnet连接到这些端口
telnet fully-qualified-server-name 5022
正如在“ 镜像属性” GUI 的“ 注释”部分中提到的那样,在见证字段下方,服务器名称必须是完全限定的tcp地址。
您应该只看到黑屏。在此示例中,我选择了一个会导致连接失败的名称。如果看到“无法打开连接”,则说明无法访问定义为镜像,主体和见证的服务器,或者您使用的名称不正确。
可以在Windows 2008的“功能”下添加telnet客户端。
在Windows 2008中,右键单击“计算机”,可以看到完整的计算机名称。您也应该能够从命令行ping通它。例如:ping myservername
更新资料
请在每个SQL Server实例上运行以下查询,然后将结果放入您的问题中。这些疑难解答提示中的许多技巧都来自:http : //msdn.microsoft.com/zh-cn/library/ms189127.aspx
显示TCP端点
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
从其他服务器实例登录服务帐户需要CONNECT权限。确保来自其他服务器的登录名具有CONNECT权限。若要确定谁对端点具有CONNECT权限,请在每个服务器实例上使用以下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
Grantor是分配(CO)连接权限的帐户,Grantee是具有连接权限的帐户
从命令行运行ipconfig /all
并记下主机名返回的内容。