【问题标题】:Error: 1418 - While creating Mirror - SQL Server 2008 R2错误:1418 - 创建镜像时 - SQL Server 2008 R2
【发布时间】:2016-01-11 12:00:38
【问题描述】:

SQL Server 2008 R2 实例有很多带有镜像配置的数据库。我正在尝试为大型数据库配置镜像,并与其他已经拥有配置的数据库进行比较。启动镜像时的结果是“Error: 1418”。

有人遇到过同样的问题吗?如果能得到一些帮助,我会很高兴的。

谢谢。

【问题讨论】:

    标签: sql-server sql-server-2008-r2 mirror


    【解决方案1】:

    SQL SERVER - 错误:1418。服务器网络地址不能 达到或不存在。

    What should be checked (copied from the V. Alvarez's blog):

    1. ENDPOINTS 的状态应为已启动。

    select state_desc from sys.database_mirroring_endpoints

    1. 系统不应位于防火墙后面。
    2. 确保主体服务器实例和镜像实例正在侦听正确的端口以及是否可用。
    3. 名称管道协议已启用。
    4. 使用相同的用户名和密码在两台计算机上运行 SQL Server 服务。
    5. 运行 SQL Server 服务的用户名在两台计算机之间具有 NT Auth 访问权限。
    6. 确保 SQL Server 服务的用户名对 SQL Server 实例具有权限。

    【讨论】:

    • 嗨,约翰。我认为我没有面临端点问题,因为它已经为其他数据库进行了镜像配置。只有一个数据库返回错误。
    • 你检查过p.5吗? (用户名/密码一致)
    • 是的,我有。他们使用相同的用户名/密码
    【解决方案2】:

    我知道这太老了,但我刚刚遇到了同样的问题,我至少花了 2 天时间来解决它。

    我确实经历了各种故障排除以及应该检查哪些博客和文章。

    最后,解决我的问题是两个步骤。

    首先我配置了the mirroring using Certificates (Transact-SQL)

    该链接的步骤是:

    为出站连接配置 Host_A:

    1. 如果需要,在主数据库上创建数据库主密钥。

      CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
      
    2. 为此服务器实例制作证书。

      CREATE CERTIFICATE HOST_A_cert   
         WITH SUBJECT = 'HOST_A certificate';
      
    3. 使用证书为服务器实例创建一个镜像端点。

      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  
         );
      
    4. 备份HOST_A证书,并将其复制到其他系统HOST_B。

      BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
      
    5. 使用任何安全复制方法,将 C:\HOST_A_cert.cer 复制到 HOST_B。

    为出站连接配置 Host_B

    1. 如果需要,在主数据库上创建数据库主密钥。

      CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
      
    2. 在 HOST_B 服务器实例上制作证书。

      CREATE CERTIFICATE HOST_B_cert   
         WITH SUBJECT = 'HOST_B certificate for database mirroring';
      
    3. 在 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  
         );  
      
    4. 备份 HOST_B 证书。

      BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
      
    5. 使用任何安全复制方法,将 C:\HOST_B_cert.cer 复制到 HOST_A。

    为入站连接配置 Host_A:

    1. 在 HOST_A 上为 HOST_B 创建一个登录名。

      CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';
      
    2. 为该登录创建一个用户。

      CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
      
    3. 将证书与用户关联。

      CREATE CERTIFICATE HOST_B_cert  
         AUTHORIZATION HOST_B_user  
         FROM FILE = 'C:\HOST_B_cert.cer'
      
    4. 授予远程镜像端点登录的 CONNECT 权限。

      GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
      

    为入站连接配置 Host_B:

    1. 在 HOST_B 上为 HOST_A 创建一个登录。

      CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2'; 
      
    2. 为该登录创建一个用户。

      CREATE USER HOST_A_user FOR LOGIN HOST_A_login; 
      
    3. 将证书与用户关联。

      CREATE CERTIFICATE HOST_A_cert  
         AUTHORIZATION HOST_A_user  
         FROM FILE = 'C:\HOST_A_cert.cer'
      
    4. 授予远程镜像端点登录的 CONNECT 权限。

      GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
      

    配置镜像伙伴:

    1. 在 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';
      
    2. 在 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) (至少对我来说这是固定的)

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      相关资源
      最近更新 更多