範例:使用憑證設定資料庫鏡像 (Transact-SQL)
此範例會顯示使用以憑證為基礎的驗證建立資料庫鏡像工作階段所需的所有階段。此主題中的範例使用 Transact-SQL。除非您可保證網路的安全無虞,否則建議您對資料庫鏡像連接使用加密。
將憑證複製到另一個系統時,請使用安全複製方法。務必將您所有的憑證小心保管。
範例
下列範例示範必須針對位於 HOST_A 的一個夥伴完成什麼動作。此範例中的兩個夥伴都是三個電腦系統中的預設伺服器執行個體。兩個伺服器執行個體在不受信任的 Windows 網域上執行,因此必須有憑證驗證。
由 HOST_A 取得初始主體角色,而由 HOST_B 取得鏡像角色。
使用憑證設定資料庫鏡像包含四個一般階段,其中三個階段 (1、2 和 4) 將由這則範例示範。這些階段如下:
設定傳出連接
這個範例會說明下列作業的步驟:
設定傳出連接的 Host_A。
設定傳出連接的 Host_B。
如需有關設定資料庫鏡像之這個階段的詳細資訊,請參閱<如何:讓資料庫鏡像使用傳出連接的憑證 (Transact-SQL)>。
設定傳入連接
這個範例會說明下列作業的步驟:
設定傳入連接的 Host_A。
設定傳入連接的 Host_B。
如需有關設定資料庫鏡像之這個階段的詳細資訊,請參閱<如何:允許資料庫鏡像使用憑證建立傳入連接 (Transact-SQL)>。
建立鏡像資料庫
如需有關如何建立鏡像資料庫的詳細資訊,請參閱<如何:準備鏡像資料庫以進行鏡像 (Transact-SQL)>。
設定鏡像夥伴
設定傳出連接
若要設定傳出連接設定的 Host_A
在 master 資料庫上,若有需要,請建立資料庫主要索引鍵。
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO
產生這個伺服器執行個體的憑證。
USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'; GO
使用憑證建立伺服器執行個體的鏡像端點。
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
備份 HOST_A 憑證,並將它複製到其他系統 (HOST_B)。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer'; GO
使用任何安全複製方法,將 C:\HOST_A_cert.cer 複製到 HOST_B。
若要設定傳出連接設定的 Host_B
在 master 資料庫上,若有需要,請建立資料庫主要索引鍵。
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>'; GO
在 HOST_B 伺服器執行個體上產生憑證。
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate for database mirroring'; GO
在 HOST_B 上建立伺服器執行個體的鏡像端點。
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
備份 HOST_B 憑證。
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO
使用任何安全複製方法,將 C:\HOST_B_cert.cer 複製到 HOST_A。
如需詳細資訊,請參閱<如何:讓資料庫鏡像使用傳出連接的憑證 (Transact-SQL)>。
[回到頂端]
設定傳入連接
若要設定傳入連接設定的 Host_A
在 HOST_A 上建立 HOST_B 的登入。
USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO
--為該登入建立使用者。
CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO
--將憑證與使用者產生關聯。
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO
將 CONNECT 權限授與登入,以連接遠端鏡像端點。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO
若要設定傳入連接設定的 Host_B
在 HOST_B 上建立 HOST_A 的登入。
USE master; CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2'; GO
為該登入建立使用者。
CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO
將憑證與使用者產生關聯。
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\HOST_A_cert.cer' GO
將 CONNECT 權限授與登入,以連接遠端鏡像端點。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; GO
重要事項 |
---|
如果您想要在具有自動容錯移轉的高安全性模式下執行,就必須重複相同的設定步驟,以便設定傳出和傳入連接的見證。需要見證時若要設定傳入連接,您必須為兩個夥伴上的見證與見證上的兩個夥伴設定登入與使用者。 |
如需詳細資訊,請參閱<如何:允許資料庫鏡像使用憑證建立傳入連接 (Transact-SQL)>。
[回到頂端]
建立鏡像資料庫
如需有關如何建立鏡像資料庫的詳細資訊,請參閱<如何:準備鏡像資料庫以進行鏡像 (Transact-SQL)>。
設定鏡像夥伴
在 HOST_B 的鏡像伺服器執行個體上,設定 HOST_A 上的伺服器執行個體為夥伴 (設定初始主體伺服器執行個體)。以有效網路位址取代 TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024。如需詳細資訊,請參閱<指定伺服器網路位址 (資料庫鏡像)>。
--At HOST_B, set server instance on HOST_A as partner (principal server): ALTER DATABASE AdventureWorks2008R2 SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024'; GO
在 HOST_A 的主體伺服器執行個體上,設定 HOST_B 上的伺服器執行個體為夥伴 (設定為初始鏡像伺服器執行個體)。以有效網路位址取代 TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024。
--At HOST_A, set server instance on HOST_B as partner (mirror server). ALTER DATABASE AdventureWorks2008R2 SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024'; GO
此範例假設工作階段將在高效能模式下執行。若要設定此工作階段為高效能模式,請在主體伺服器執行個體上 (在 HOST_A 上) 設定交易安全性為 OFF。
--Change to high-performance mode by turning off transacton safety. ALTER DATABASE AdventureWorks2008R2 SET PARTNER SAFETY OFF; GO
[!附註]
如果您想要在具有自動容錯移轉的高安全性模式下執行,請保持交易安全性設定為 FULL (預設值),並在執行第二個 SET PARTNER 'partner_server' 陳述式後儘快加入見證。請注意,必須先為傳入與傳出設定見證。
[回到頂端]
請參閱