zoukankan      html  css  js  c++  java
  • 数据库镜像出现“无法访问或不存在"故障的原因和解决方案

    如果两个服务器不是在同一个域中, 并且sql server服务不是用域用户做为启动服务的身份。那么在做数据库镜像很可能收到如标题所示的错误。

    这时,你就必须改用证书做端点的身份验证才能将运行起数据库镜像。

    现在假设环境:
    Host_A为主服务器,Host_B为镜像服务器。
    已经按要求进行将Host_A的目标数据库备份,并在Host_B中还原。
    通过UI界面已经配置好镜像,端点的端口两边都是5022,名称都为[镜像]。
    防火墙的相关端口已经打开,SQL Server的TCP/IP协议已经启用。

    步骤一
    在Host_A上执行
    USE master;
    GO
    //在 master 数据库中,创建数据库主密钥(如果需要)。
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
    GO
    CREATE CERTIFICATE HOST_A_cert 
       
    WITH SUBJECT = 'HOST_A certificate';
    GO
    /****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
    IF  EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'镜像'
    DROP ENDPOINT [镜像]
    GO
    /****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
    CREATE ENDPOINT [镜像] 
        
    AUTHORIZATION [sa]
        STATE
    =STARTED
        
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
        
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE HOST_A_cert
    , ENCRYPTION 
    = REQUIRED ALGORITHM RC4)
    GO
    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\Data\HOST_A_cert.cer';

    步骤二
    在Host_B上执行
    //在 master 数据库中,创建数据库主密钥(如果需要)。
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
    GO
    CREATE CERTIFICATE HOST_B_cert 
       
    WITH SUBJECT = 'HOST_B certificate';
    GO
    /****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
    IF  EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'镜像'
    DROP ENDPOINT [镜像]
    GO
    /****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
    CREATE ENDPOINT [镜像] 
        
    AUTHORIZATION [sa]
        STATE
    =STARTED
        
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
        
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE HOST_B_cert
    , ENCRYPTION 
    = REQUIRED ALGORITHM RC4)
    GO
    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\Data\HOST_B_cert.cer';
    GO

    步骤三
    复制HOST_A_cert.cer到Host_B,复制复制HOST_B_cert.cer到Host_A

    步骤四
    在Host_A上执行
    USE master;
    CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
    GO
    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
    GO
    CREATE CERTIFICATE HOST_B_cert
       
    AUTHORIZATION HOST_B_user
       
    FROM FILE = 'D:\backup\HOST_B_cert.cer'
    GO
    GRANT CONNECT ON ENDPOINT::[镜像]   TO [HOST_B_login];

    步骤五
    在Host_B上执行
    USE master;
    CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
    GO
    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
    GO
    CREATE CERTIFICATE HOST_A_cert
       
    AUTHORIZATION HOST_A_user
       
    FROM FILE = 'D:\backup\HOST_A_cert.cer'
    GO
    GRANT CONNECT ON ENDPOINT::[镜像]   TO [HOST_A_login];
    启动镜像!
  • 相关阅读:
    vue 集成 vis-network 实现网络拓扑图
    三维空间旋转和Three.JS中的实现
    es6常用新属性(详细整理版)
    css的top和left属性不起作用
    网易云音乐歌单生成外链播放器
    Webstorm常用快捷键备忘
    CPU
    中标麒麟neokylin信息查看
    split分割(拆分)文件
    centos7 安装wps
  • 原文地址:https://www.cnblogs.com/goodspeed/p/1558252.html
Copyright © 2011-2022 走看看