SQL Server 2005 数据库镜像错误

Posted

技术标签:

【中文标题】SQL Server 2005 数据库镜像错误【英文标题】:SQL Server 2005 DB Mirroring Error 【发布时间】:2010-10-09 17:22:40 【问题描述】:

尝试在我的服务器上设置 SQL Server 2005 数据库镜像时出现以下错误。我正在运行两台装有 SQL 2005 的 Win2K3 服务器,其中一台与 SQL 2000 版本一起运行。使用NORecovery 恢复数据库并配置端点后,当我尝试启动镜像会话时遇到以下错误。

TITLE: Database Properties
------------------------------

An error occurred while starting mirroring.

------------------------------
ADDITIONAL INFORMATION:

Alter failed for Database 'TestDB'.  (Microsoft.SqlServer.Smo)

------------------------------

An exception occurred while executing a Transact-SQL statement or 
batch. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

The server network address "TCP://S-01.ssl.local:5022" can not be reached 
or does not exist. Check the network address name 
and that the ports for the local and remote endpoints are operational. 
(Microsoft SQL Server, Error: 1418)

我还要注意,我可以使用两台服务器的全名远程登录到端口。

更新

辅助服务器在本地 1434 上作为命名实例运行 SQL Server 2005,并在与所使用的 FQDN 匹配的 IP 地址上作为 1433 在网络上运行。

[编辑]

我可以 Telnet 到两台服务器上的 5022 端口。

[解决方案]

如果您可以登录并且两个端口都处于活动状态,则可能是 SQL Server 使用的基础帐户不是域帐户。在我们的服务器上,本地系统帐户是服务登录的身份。一旦将其更改为管理员域帐户,问题就解决了。

【问题讨论】:

请务必回答有关能够进入 5022 端口的问题。 它抱怨的网络地址,是principal、mirror还是witness? 【参考方案1】:

由于看起来您的登录成功并且在实际启用镜像时失败了,您是否尝试过使用 SQL Profiler 来准确查看失败的语句?

不确定您是否熟悉 Profiler,但here's a tutorial(适用于 SQL 2000,但该工具在 2005 年仅略有不同)。

【讨论】:

我一直在使用它。我去看看。 ALTER DATABASE [TestDB] SET PARTNER = N'TCP://S-01.ssl.local:5022' 是在主服务器上运行的语句,它完成了。另一台服务器的跟踪上没有任何显示,这似乎是镜像设置的一部分。我想知道它是否是命名实例的一部分。 您是说您认为它在命名实例之间可能不起作用?我不认为这是一个问题,但我认为这是可能的。您是否在同一服务器上的多个实例上设置了镜像?也许你只能镜像一个实例,尽管这似乎是有限的。【参考方案2】:

您是否在每台服务器上远程登录到端口 5022?那是数据库镜像使用的端口,而不是 SQL 端口 1433 / 1434。

我会检查所有防火墙设置以及 SQL Server 服务是否在域帐户下运行。

您可能还想查看这篇关于镜像的疑难解答文章中的其他要点:

http://blogs.msdn.com/grahamk/archive/2008/12/08/database-mirroring-error-1418-troubleshooter.aspx

【讨论】:

两个端口都可以通过 telnet 访问【参考方案3】:

检查两台机器上的 SQL 日志并确保 SQL Server 正在侦听数据库镜像端点应该使用的端口 5022。

在具有命名实例的服务器上,是否有另一个实例配置为使用相同的 TCP 端口进行镜像或其他?

【讨论】:

【参考方案4】:

如果您可以登录并且两个端口都处于活动状态,则可能是 SQL Server 使用的基础帐户不是域帐户。在我们的服务器上,本地系统帐户是服务登录的身份。一旦将其更改为管理员域帐户,问题就解决了。

【讨论】:

【参考方案5】:

我也遇到过这个问题,但是在 Windows 7 中运行的 sql server 2008 中(同一台机器上的所有实例),

在我的情况下,解决方案:

正在这样做:

第 1 步)您的系统防火墙不应阻止 SQL Server 端口。

步骤 2) 转到计算机管理 >> 服务和应用程序 >> SQL Server 2005 配置 >> 网络配置 启用 TCP/IP 协议。确保 SQL SERVER 端口默认为 1433。

只是为了确保再执行一个可能需要也可能不需要的步骤。

步骤 3) 转到计算机管理 >> 服务和应用程序 >> SQL Server 2005 配置 >> 客户端配置 启用 TCP/IP 协议。

参考:Pinal Dave (http://blog.SQLAuthority.com)

然后是这个:http://www.youtube.com/watch?v=VHAUtCiN1M4 女巫基本上是转到 SQL Server 配置管理器,并为每个实例设置您的本地用户和密码。

只是我的两分钱,因为似乎并非每个解决方案都适用于每个人......我花了一天时间试图弄清楚

【讨论】:

以上是关于SQL Server 2005 数据库镜像错误的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005数据库检索时,出现无法为此请求检索数据的问题

我使用SQL server 2008附加2005的数据库,但是出现错误!

SQL server 2005 可以数据库修复

安装数据库sql server 2005出错

sql 2012收缩日志需要停镜像吗

如何转换SQL Server 2008数据库到SQL Server 2005