
| 優點 | 缺點 |
|---|---|
| 無需共享儲存體,硬體成本低 | 資料庫層級,新增 DB 需逐一設定鏡像 |
| Standard/Enterprise/Developer 版支援 | 登入/使用者存於 master,無法鏡像,需手動同步 |
| 設定相對簡單,支援同步/非同步模式 | SQL Agent 作業無法自動同步 |
| 客戶端透明切換(需 .NET 2.0+ / JDBC 1.1+) | 僅特定條件下才能實現透明故障轉移 |
| 不支援跨資料庫交易與分散式交易 |
USE master;
ALTER DATABASE SET RECOVERY FULL;
-- 主機
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate', START_DATE = '01/01/2008';
-- 備機
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate', START_DATE = '01/01/2008';
-- 主機
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATABASE_MIRRORING
(AUTHENTICATION = CERTIFICATE HOST_A_cert, ENCRYPTION = REQUIRED ALGORITHM AES, ROLE = ALL);
-- 備機(憑證換為 HOST_B_cert)
-- 主機
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:\SQLBackup\HOST_A_cert.cer';
-- 備機
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\SQLBackup\HOST_B_cert.cer';
-- 將 .cer 檔跨機器複製到對方同路徑
-- 主機
CREATE LOGIN HOST_B_login WITH PASSWORD = 'killkill';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\SQLBackup\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
-- 備機(對稱操作,換成 HOST_A_*)
-- 主機查詢 SID
USE master;
SELECT sid, name FROM syslogins WHERE name = 'myuser';
-- 備機建立相同 SID 登入
USE master;
EXEC sp_addlogin @loginame = 'myuser', @passwd = 'password', @sid = 0x074477739DCA0E499C29394FFFC4ADE4;
從主機完整備份還原,選項勾選 RESTORE WITH NORECOVERY。

-- 主機執行
ALTER DATABASE shishan SET PARTNER = 'TCP://10.168.6.45:5022';
-- 若主機失敗,嘗試備機執行
ALTER DATABASE shishan SET PARTNER = 'TCP://10.168.6.49:5022';
成功後 SSMS 會顯示鏡像圖示。

ALTER DATABASE ... SET PARTNER

-- 主機
USE master;
ALTER DATABASE SET PARTNER FAILOVER;
-- 備機
USE master;
ALTER DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
-- 備機(現為主體)
USE master;
ALTER DATABASE SET PARTNER RESUME; -- 恢復鏡像會話
ALTER DATABASE SET PARTNER FAILOVER; -- 切回原主機
-- 同步模式(預設,Standard 僅支援此模式)
ALTER DATABASE SET PARTNER SAFETY FULL;
-- 非同步模式(效能最佳,可能資料遺失)
ALTER DATABASE SET PARTNER SAFETY OFF;