镜像 - 无法访问服务器网络地址

tes*_*ing 13 sql-server-2005 sql-server-2008 sql-server mirroring

我安装了 SQL Server 2008 R2。它包含三个实例。

  1. 默认 (MSSQLServer)
  2. 第一个例子
  3. 第二审

所有这些都是作为网络服务登录..

默认实例是主体服务器第一个实例是镜像第二个实例是见证服务器

我最初对我的主体数据库进行了完整备份和事务日志备份。通过保持相同的数据库名称将其恢复到第一个实例,恢复状态为无恢复

最后,我启动了镜像,并收到如下所示的两条错误消息。

在此处输入图片说明

在此处输入图片说明

Cra*_*ein 12

尝试一些基本的连接测试。

  1. 验证 5022、5023 和 5024 是否正在侦听。
  2. 验证您使用的服务器名称是否正确。

从命令行:

netstat -an
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在我的服务器上,您可以看到 5022 正在侦听。

接下来确保您可以通过 telnet 连接到这些端口

telnet fully-qualified-server-name 5022
Run Code Online (Sandbox Code Playgroud)

正如它在镜像属性 GUI的“注释”部分中提到的,就在见证字段下方,服务器名称必须是完全限定的 tcp 地址。

在此处输入图片说明

您应该只看到黑屏。在这个例子中,我选择了一个会导致连接失败的名称。如果您看到“无法打开连接”,则表示无法访问定义为镜像、主体和见证的服务器,或者您使用的名称不正确。

telnet 客户端可以在 Windows 2008 的功能下添加。

在 Windows 2008 中,当您右键单击“计算机”时,您可以看到完整的计算机名称。您也应该能够从命令行 ping 它。例如:ping myservername

更新

请在每个 SQL Server 实例上运行以下查询并将结果放在您的问题中。许多这些故障排除技巧来自:http : //msdn.microsoft.com/en-us/library/ms189127.aspx

显示 tcp 端点

SELECT type_desc, port FROM sys.tcp_endpoints;
Run Code Online (Sandbox Code Playgroud)

显示镜像端点的状态

SELECT state_desc FROM sys.database_mirroring_endpoints;
Run Code Online (Sandbox Code Playgroud)

检查 ROLE 是否正确

SELECT role FROM sys.database_mirroring_endpoints;
Run Code Online (Sandbox Code Playgroud)

显示端点的权限

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
Run Code Online (Sandbox Code Playgroud)

从其他服务器实例登录服务帐户需要 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
Run Code Online (Sandbox Code Playgroud)

Grantor 是分配(CO)连接权限的账户,Grantee 是具有连接权限的账户

从命令行运行ipconfig /all并注意主机名返回的内容。