我有两台 SQL 服务器,我需要将数据库从一台服务器镜像到另一台服务器。
应该直截了当,两个服务器没有见证者。
- 两台服务器都运行同一版本的 MS SQL Std 2014
- SQL 服务均在同一个域帐户下运行
- 域帐户是 SQL Server 操作系统上的本地管理员
- 域帐户是 SQL 服务器上的 SysAdmin 和公共角色
- 数据库已备份并从主数据库恢复到辅助数据库,数据库正在辅助数据库上运行
- 两台服务器上的文件夹路径相同。SQL 实例安装在两台服务器上的 D: 上
- Windows 防火墙(用于测试目的)有一条规则,用于解除两台服务器上所有 TCP 端口的双向阻塞。
- 两个数据库都处于完整恢复模式,兼容级别为 110(SQL Server 2012)
已使用 T-sql 在主服务器和辅助服务器上创建镜像端点,如下所示:
CREATE ENDPOINT [Mirror]
STATE = STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL )
FOR DATABASE_MIRRORING(ROLE = ALL, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)
GO
我尝试过改变以下开关
ROLE = PARTNER
ENCRYPTION = REQUIRED ALGORITHM RC4
全部产生相同的结果。
主服务器 [CRM-2016-SQL-W] 上与此相同的消息
划掉的服务器地址是 TCP://CRM-2016-SQL-W:5022。因此,主服务器抱怨它无法与本地镜像端点通信(据我了解)。
从所有位置(主要 SQL/辅助 SQL 和网络上的其他地方)进行的 Telnet 均显示两个服务器上的端口 5022 均可访问。
如果删除端点端口 5022 将拒绝连接。
我已经在两端的端口 7022 上进行了测试并得到了相同的结果。
辅助服务器的 SQL 服务器日志显示:
Database mirroring connection error 2 'Connection attempt failed with error: '10060(A connection attempt failed because the connected party did not properly respond after a period of time<c/> or established connection failed because connected host has failed to respond.)'.' for 'TCP://CRM-2016-SQL-W.ncp.co.uk:5022'.
来自主服务器的日志同时仅显示:
The database Mirroring endpoint has stopped listening for connections
The database Mirroring endpoint is now listening for connections
Service is listening on ['any' <ipv4>5022]
Service is listening on ['any' <ipv6>5022]
我已遵循此处的说明:https://stackoverflow.com/questions/11032937/how-to-resolve-error-1418-in-sql-server-while-mirroring无济于事。
我把这项工作留到最后一分钟,因为上次做的时候没有遇到任何问题,但现在我明天的项目会议可能会有点尴尬!非常感谢大家的想法。
答案1
您是否看到端点是否已创建。使用此查询:-
从 sys.tcp_endpoints 中选择*;从 sys.database_mirroring_endpoints 中选择*;
我刚刚发现在 Windows 2016 上使用 SQL 2016 时我无法创建端点。我必须手动添加它们。