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

此示例演示使用 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  
    

相关任务

另请参阅

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