【发布时间】:2016-01-11 12:00:38
【问题描述】:
SQL Server 2008 R2 实例有很多带有镜像配置的数据库。我正在尝试为大型数据库配置镜像,并与其他已经拥有配置的数据库进行比较。启动镜像时的结果是“Error: 1418”。
有人遇到过同样的问题吗?如果能得到一些帮助,我会很高兴的。
谢谢。
【问题讨论】:
标签: sql-server sql-server-2008-r2 mirror
SQL Server 2008 R2 实例有很多带有镜像配置的数据库。我正在尝试为大型数据库配置镜像,并与其他已经拥有配置的数据库进行比较。启动镜像时的结果是“Error: 1418”。
有人遇到过同样的问题吗?如果能得到一些帮助,我会很高兴的。
谢谢。
【问题讨论】:
标签: sql-server sql-server-2008-r2 mirror
SQL SERVER - 错误:1418。服务器网络地址不能 达到或不存在。
What should be checked (copied from the V. Alvarez's blog):
ENDPOINTS的状态应为已启动。
select state_desc from sys.database_mirroring_endpoints
- 系统不应位于防火墙后面。
- 确保主体服务器实例和镜像实例正在侦听正确的端口以及是否可用。
- 名称管道协议已启用。
- 使用相同的用户名和密码在两台计算机上运行 SQL Server 服务。
- 运行 SQL Server 服务的用户名在两台计算机之间具有 NT Auth 访问权限。
- 确保 SQL Server 服务的用户名对 SQL Server 实例具有权限。
【讨论】:
p.5吗? (用户名/密码一致)
我知道这太老了,但我刚刚遇到了同样的问题,我至少花了 2 天时间来解决它。
我确实经历了各种故障排除以及应该检查哪些博客和文章。
最后,解决我的问题是两个步骤。
首先我配置了the mirroring using Certificates (Transact-SQL)。
该链接的步骤是:
为出站连接配置 Host_A:
如果需要,在主数据库上创建数据库主密钥。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
为此服务器实例制作证书。
CREATE CERTIFICATE HOST_A_cert
WITH SUBJECT = 'HOST_A certificate';
使用证书为服务器实例创建一个镜像端点。
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT=7024
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_A_cert
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL
);
备份HOST_A证书,并将其复制到其他系统HOST_B。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
使用任何安全复制方法,将 C:\HOST_A_cert.cer 复制到 HOST_B。
为出站连接配置 Host_B
如果需要,在主数据库上创建数据库主密钥。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
在 HOST_B 服务器实例上制作证书。
CREATE CERTIFICATE HOST_B_cert
WITH SUBJECT = 'HOST_B certificate for database mirroring';
在 HOST_B 上为服务器实例创建一个镜像端点。
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT=7024
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_B_cert
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL
);
备份 HOST_B 证书。
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
使用任何安全复制方法,将 C:\HOST_B_cert.cer 复制到 HOST_A。
为入站连接配置 Host_A:
在 HOST_A 上为 HOST_B 创建一个登录名。
CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';
为该登录创建一个用户。
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
将证书与用户关联。
CREATE CERTIFICATE HOST_B_cert
AUTHORIZATION HOST_B_user
FROM FILE = 'C:\HOST_B_cert.cer'
授予远程镜像端点登录的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
为入站连接配置 Host_B:
在 HOST_B 上为 HOST_A 创建一个登录。
CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';
为该登录创建一个用户。
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
将证书与用户关联。
CREATE CERTIFICATE HOST_A_cert
AUTHORIZATION HOST_A_user
FROM FILE = 'C:\HOST_A_cert.cer'
授予远程镜像端点登录的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
配置镜像伙伴:
在 HOST_B 上的镜像服务器实例上,将 HOST_A 上的服务器实例设置为伙伴(使其成为初始主体服务器实例)。用有效的网络地址替换TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024
--At HOST_B, set server instance on HOST_A as partner (principal server):
ALTER DATABASE AdventureWorks
SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';
在 HOST_A 上的主体服务器实例上,将 HOST_B 上的服务器实例设置为伙伴(使其成为初始镜像服务器实例)。用有效的网络地址替换TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024
--At HOST_A, set server instance on HOST_B as partner (mirror server).
ALTER DATABASE AdventureWorks
SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';
现在,如果在所有这些步骤之后你得到相同的错误Error: 1418,最好尝试将镜像和主体的端口更改为不同 (例如,主体:5022,镜像:5023) (至少对我来说这是固定的)。
【讨论】: