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


12

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

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

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

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

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

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

在此处输入图片说明

在此处输入图片说明

Answers:


12

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

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

从命令行:

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并记下主机名返回的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.