範例:使用 Windows 驗證設定資料庫鏡像 (Transact-SQL)

此範例顯示使用 Windows 驗證建立具有見證的資料庫鏡像工作階段的所有必要階段。此主題中的範例使用 Transact-SQL。請注意,使用 Transact-SQL 步驟的另一種方法是,您可以使用 [設定資料庫鏡像安全性精靈] 來設定資料庫鏡像。如需詳細資訊,請參閱<管理資料庫鏡像 (SQL Server Management Studio)>。

此範例的必要元件

重要事項重要事項

建議您<如何:使用 Windows 驗證建立資料庫鏡像工作階段 (Transact-SQL)>主題的<開始之前>一節。

此範例使用 AdventureWorks2008R2 範例資料庫,依預設採用簡單復原模式。若要以此資料庫來使用資料庫鏡像,您必須改用完整復原模式。若要在 Transact-SQL 中這樣做,請使用 ALTER DATABASE 陳述式,如下所示:

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

如需有關在 SQL Server Management Studio 中變更復原模式的詳細資訊,請參閱<如何:檢視或變更資料庫的復原模式 (SQL Server Management Studio)>。

權限

需要 CREATE ENDPOINT 權限或系統管理員 (sysadmin) 固定伺服器角色的成員資格。需要資料庫的 ALTER 權限。

範例

此範例中的兩個夥伴伺服器和見證伺服器,各為三個電腦系統中的預設伺服器執行個體。這三個伺服器執行個體都執行相同的 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. 建立鏡像資料庫。如需詳細資訊,請參閱<如何:準備鏡像資料庫以進行鏡像 (Transact-SQL)>。

  5. 在 PARTNERHOST5 鏡像伺服器執行個體上,將 PARTNERHOST1 的伺服器執行個體設為夥伴伺服器 (也就是將其設為初始主體伺服器執行個體)。

    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 
        'TCP://PARTNERHOST1.COM:7022';
    GO
    
  6. 在 PARTNERHOST1 的主體伺服器執行個體上,將 PARTNERHOST5 的伺服器執行個體設為夥伴伺服器 (也就是將其設為初始鏡像伺服器執行個體)。

    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://PARTNERHOST5.COM:7022';
    GO
    
  7. 在主體伺服器上,設定見證伺服器 (位於 WITNESSHOST4)。

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