我正在尝试在内部网络中不同服务器上的两个sql 2008数据库之间设置镜像,作为测试运行之前,在不同位置使用两个实时服务器执行相同的操作。
当我实际尝试在目标数据库上切换镜像时(使用 ALTER DATABASE testdb SET PARTNER = N'TCP:// myNetworkAddress:5022')我收到一个错误,告诉我无法访问或不存在服务器网络地址。一些研究表明这是一个相当无用的消息,由于许多可能的原因而弹出,其中一些原因与现有服务器或其他原因没有直接关系。
到目前为止,我已经检查并尝试了以下方法来解决这个问题:
在目标服务器上,我已经在SQL Configuration Manager中验证了“SQLEXPRESS的协议”(我的本地安装由于某种原因被标记为SQLEXPRESS,即使查询SERVERPROPERTY('Edition')显示它是64 -bit Enterprise,以及SQL Native Client 10的客户端协议都启用了TCP / IP
我正在使用一个名为CurrPorts的实用程序来验证是否有一个TCP / IP端口与镜像设置(5022)指定的相同编号打开并在我的机器上监听。 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
据我所知,我已经完成所有要点无济于事。
我不确定的另一件事是向导中的服务帐户框。对于这两个数据库,我一直在放入我们的高级访问帐户名,该帐户名应具有对数据库的完全管理权限 - 我认为这是正确的做法。
我不确定下一步转向尝试解决此问题。感谢收到的建议。
干杯, 马特
答案 0 :(得分:0)
我认为SQL Express只能作为具有此SQL功能的见证服务器,但您可能会在ServerFault上获得更好的里程数。
麦克
答案 1 :(得分:0)
您的网络设置可能没问题。我们在MS SQL中收到了非信息性错误消息 - 问题可能是授权问题,服务器仍然会说“无法访问网络地址”。
顺便说一下,如何进行身份验证? MSSQL服务(在server1上)本身必须作为有效的db用户运行(在server2上,反之亦然),以使镜像工作。