示例:使用 Windows 身份验证配置数据库镜像 (Transact-SQL)

适用于:SQL Server

此示例说明使用 Windows 身份验证来创建带有见证服务器的数据库镜像会话所需的所有阶段。 本主题中的示例使用 Transact-SQL。 注意,可以不使用 Transact-SQL 步骤,而使用配置数据库镜像安全向导来设置数据库镜像。 有关详细信息,请参阅使用 Windows 身份验证建立数据库镜像会话 (SQL Server Management Studio)

先决条件

该示例使用了 AdventureWorks 示例数据库,在默认情况下该数据库使用简单恢复模式。 若要对此数据库进行数据库镜像,必须将它更改为使用完整恢复模式。 若要用 Transact-SQL 实现此目的,请使用 ALTER DATABASE 语句,如下所示:

USE master;  
GO  
ALTER DATABASE AdventureWorks   
SET RECOVERY FULL;  
GO  

有关更改 SQL Server Management Studio 中恢复模式的信息,请参阅查看或更改数据库的恢复模式 (SQL Server)

权限

需要对数据库的 ALTER 权限和 CREATE ENDPOINT 权限,或者需要 sysadmin 固定服务器角色的成员资格。

示例

在此示例中,两个伙伴服务器和见证服务器分别是三台计算机系统上的默认服务器实例。 这三个服务器实例运行同一个 Windows 域,但本示例的见证服务器实例的用户帐户(用作启动服务帐户)有所不同。

下表总结了此示例中使用的值。

初始镜像角色 宿主系统 域用户帐户
主体 PARTNERHOST1 <Mydomain>\<dbousername>
镜像 PARTNERHOST5 <Mydomain>\<dbousername>
见证 WITNESSHOST4 <Somedomain>\<witnessuser>
  1. 在主体服务器实例(PARTNERHOST1 中的默认实例)上创建端点。

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=PARTNER)  
    GO  
    --Partners under same domain user; login already exists in master.  
    --Create a login for the witness server instance,  
    --which is running as Somedomain\witnessuser:  
    USE master ;  
    GO  
    CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ;  
    GO  
    -- Grant connect permissions on endpoint to login account of witness.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser];  
    --Grant connect permissions on endpoint to login account of partners.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername];  
    GO  
    
  2. 在镜像服务器实例(PARTNERHOST5 中的默认实例)上创建端点。

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    --Create a login for the witness server instance,  
    --which is running as Somedomain\witnessuser:  
    USE master ;  
    GO  
    CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account of witness.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser];  
    --Grant connect permissions on endpoint to login account of partners.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername];  
    GO  
    
  3. 在见证服务器实例(WITNESSHOST4 中的默认实例)上创建端点。

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=WITNESS)  
    GO  
    --Create a login for the partner server instances,  
    --which are both running as Mydomain\dbousername:  
    USE master ;  
    GO  
    CREATE LOGIN [Mydomain\dbousername] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account of partners.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername];  
    GO  
    
  4. 创建镜像数据库。 有关详细信息,请参阅为镜像准备镜像数据库 (SQL Server)

  5. 在 PARTNERHOST5 中的镜像服务器实例上,将 PARTNERHOST1 中的服务器实例设置为伙伴(使它成为初始的主体服务器实例)。

    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1.COM:7022'  
    GO  
    
  6. 在 PARTNERHOST1 中的主体服务器实例上,将 PARTNERHOST5 中的服务器实例设置为伙伴(使它成为初始的镜像服务器实例)。

    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5.COM:7022'  
    GO  
    
  7. 在主体服务器中,设置见证服务器(位于 WITNESSHOST4 中)。

    ALTER DATABASE AdventureWorks   
        SET WITNESS =   
        'TCP://WITNESSHOST4.COM:7022'  
    GO  
    

Related Tasks

另请参阅

ALTER DATABASE (Transact-SQL)
数据库镜像端点 (SQL Server)
针对数据库镜像和 Always On 可用性组的传输安全性 (SQL Server)
当数据库在其他服务器实例上可用时管理元数据 (SQL Server)
SQL Server 数据库引擎和 Azure SQL Database 的安全中心