0

我正在尝试在我的内部网络中的不同服务器上的两个 sql 2008 数据库之间设置镜像,作为测试运行,然后对不同位置的两台实时服务器执行相同的操作。

当我实际尝试在目标数据库上切换镜像时(使用 ALTER DATABASE testdb SET PARTNER = N'TCP://myNetworkAddress:5022'),我收到一条错误消息,告诉我无法访问或无法访问服务器网络地址不存在。一项小研究表明,这是一个相当无用的消息,由于许多可能的原因而弹出,其中一些与现有的服务器或其他原因没有直接关系。

到目前为止,我已经检查并尝试了以下方法来解决这个问题:

  • 在目标服务器上,我已经在 SQL 配置管理器中验证了“SQLEXPRESS 协议”(由于某种原因,我的本地安装被标记为 SQLEXPRESS,即使查询 SERVERPROPERTY('Edition') 显示它是 64 位企业版),并且SQL Native Client 10 的客户端协议都启用了 TCP/IP

  • 我正在使用一个名为 CurrPorts 的实用程序来验证是否存在与镜像设置 (5022) 指定的相同编号的 TCP/IP 端口已打开并在我的机器上进行侦听。Netstat 验证两台机器都在监听这个端口。

  • 我已经运行了 SELECT type_desc, port FROM sys.tcp_endpoints; 和 SELECT state_desc, role FROM sys.database_mirroring_endpoints 以确保一切都按应有的方式设置。唯一让我感到困惑的是“角色”返回 1 .. 不完全确定这意味着什么。

  • 我试图正确地准备数据库。我已经从主数据库中备份了数据库和日志文件,并使用 NORESTORE 将它们还原到目标数据库上。我已经尝试打开镜像,同时让它们处于 NORESTORE 状态并运行一个空的 RESTORE ......似乎两者都没有太大区别。作为一个测试,我还尝试镜像我创建的一个非活动的、几乎为空的数据库,但这也不起作用。

  • 我已经验证了两台服务器都没有在防火墙后面(它们都在同一个网络上,尽管在不同的机器上)

我不知道下一步该转向哪里。我看过这两个故障排除帮助页面:

http://msdn.microsoft.com/en-us/library/ms189127.aspx

http://msdn.microsoft.com/en-us/library/aa337361.aspx

据我所知,我已经完成了所有要点,但无济于事。

我不确定的另一件事是向导中的服务帐户框。对于这两个数据库,我一直在输入我们的高级访问帐户名称,该名称应该对数据库具有完全的管理员权限——我认为这是正确的做法。

我不确定下一步该去哪里尝试解决此问题。收到的建议很感激。

干杯,马特

4

2 回答 2

0

我认为 SQL Express 只能充当具有此 SQL 功能的见证服务器,但您可能会在 ServerFault 上获得更好的里程。

麦克风。

于 2011-01-07T09:16:48.707 回答
0

您的网络设置可能没问题。我们在 MS SQL 中收到了非常不具信息性的错误消息 - 问题可能是授权问题,服务器仍然会说“无法访问网络地址”。

顺便问一下,如何进行身份验证?MSSQL 服务(在 server1 上)本身必须作为有效的 db 用户(在 server2 上,反之亦然)运行才能使镜像工作。

于 2014-02-18T13:30:54.877 回答