sqlserver 镜像配置问题 (针对服务器网络地址 "TCP://XXXXX:5022" 无法访问或不存在。 请检查网络地址名称,并检查本地和远程端点的端口是否正常运行)(代码

Posted 菜鸟程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 镜像配置问题 (针对服务器网络地址 "TCP://XXXXX:5022" 无法访问或不存在。 请检查网络地址名称,并检查本地和远程端点的端口是否正常运行)(代码相关的知识,希望对你有一定的参考价值。

按照基本操作建立镜像同步的时候,最后步骤报错

服务器网络地址 "TCP://XXXXXXX:5022" 无法访问或不存在。
请检查网络地址名称,并检查本地和远程端点的端口是否正常运行
 

查询sql日志,发现是‘10052(远程主机强迫关闭了一个现有的连接。)’,初步判断是权限原因。针对这种报错,在网上搜索了大神用证书授权的解决方案后,自己测试通过,记录一下步骤。(本案例是双机热备,只有主体服务器和镜像服务器,没有见证服务器)

  1. 创建数据库主密钥
    USE master 
    GO 
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = YourPassword;

    删除的话用drop命令,使用相同方式在镜像服务器创建主密钥

  2. 创建证书,并用主密钥加密
    USE master 
    GO 
    CREATE CERTIFICATE Host_A_Cert  
    WITH Subject = Host_A Certificate, 
    Expiry_Date = 2080-1-1; --过期日期

    删除的话用drop命令,使用相同方式在镜像服务器创建Host_B_Cert的证书

  3. 创建端点
    IF NOT EXISTS ( SELECT * FROM sys.database_mirroring_endpoints )
    BEGIN
        CREATE ENDPOINT [DatabaseMirroring] STATE = STARTED AS TCP ( LISTENER_PORT = 5022,LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION =
        CERTIFICATE Host_A_Cert, ENCRYPTION = REQUIRED Algorithm AES, ROLE = ALL );
    END

    使用相同方式在镜像服务器创建Host_B_Cert证书的端点

  4. 备份证书
    BACKUP CERTIFICATE Host_A_Cert 
    TO FILE = C:ShareFoldersHost_A_Cert.cer;  

    将备份出来的证书复制到镜像服务器。使用相同方式在镜像服务器备份证书Host_B_Cert,将镜像服务器证书复制到主体服务器。

  5. 创建登录账号
    CREATE LOGIN Host_B_Login WITH PASSWORD = YourPassword;

    创建一个账号给镜像服务器使用,使用同样方式在镜像服务器创建一个账号Host_A_Login给主体服务器使用。

  6. 创建用户,并映射到刚才创建的登录账号
    CREATE USER Host_B_User For Login Host_B_Login;

    使用相同方式在镜像服务器创建用户Host_A_User映射到刚才创建的登录账号

  7. 使用证书授权用户
    CREATE CERTIFICATE Host_B_Cert 
    AUTHORIZATION Host_B_User 
    FROM FILE = C:CertificationsHost_B_Cert.cer;

    创建一个新证书,并使用刚才从镜像服务器复制过来的证书导入,然后映射用户到这个新证书上。在镜像服务器也这样执行一遍。

  8. 将登录账号授权访问端口
    GRANT CONNECT ON ENDPOINT::[DatabaseMirroring] TO [Host_B_Login];

    在镜像服务器上也执行一遍。至此,证书授权结束。

  9. 执行镜像配置步骤(主体备份数据库,镜像还原数据库,具体自行搜索,网上都有)

参考文章:https://blog.csdn.net/elie_yang/article/details/88024042?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

 

以上是关于sqlserver 镜像配置问题 (针对服务器网络地址 "TCP://XXXXX:5022" 无法访问或不存在。 请检查网络地址名称,并检查本地和远程端点的端口是否正常运行)(代码的主要内容,如果未能解决你的问题,请参考以下文章

配置SQL Server 2008 镜像

SQLServer数据库镜像高性能模式下维护

阿里云服务器,数据库热备暖备冷备实战-镜像篇(域环境下配置)

sql数据库链接

SQL Server 2008 R2数据库镜像部署

SQL Server 2008 R2数据库镜像部署