為實現主資料庫 (CNBlogsDB1) 與備份資料庫 (CNBlogsDB2) 的**近即時同步備份**,採用 SQL Server 2008 **交易式複寫** (基於快照初始化 + 記錄讀取代理持續傳遞交易)。本文記錄完整部署流程:發佈端設定 (快照資料夾、FTP 傳遞)、訂閱端設定 (Pull 訂閱)、驗證同步、兩大關鍵故障排解 (Log Reader Agent 啟動失敗、快照存取權限)。
快照初始化:發佈端產生結構與資料快照 → 訂閱端載入。
記錄讀取代理:持續掃描發佈資料庫交易記錄 → 將標記為複寫的交易送至散發資料庫。
散發代理:訂閱端 (Pull) 從散發資料庫讀取交易 → 重播至訂閱資料庫。

CREATE DATABASE CNBlogsDemo;
USE CNBlogsDemo;
CREATE TABLE CNBlogsTest (ID INT PRIMARY KEY, Info NVARCHAR(100));

D:\ReplData\Snapshot)。

CNBlogsDemo → **交易式發佈**。CNBlogsTest)。



sa 帳號。

CNBlogsDemo_Publication → 完成。

D:\ReplData\Snapshot),建立 FTP 帳號。/ftp (需與 FTP 站點虛擬目錄對應)。
設定完成後,快照資料夾下會自動建立 ftp 子資料夾並放入快照檔案。
CNBlogsDemo (完整復原模式)。
重要:伺服器名稱**必須填寫發佈者電腦名稱**;無法解析時在 hosts 檔新增 IP 對應。
CNBlogsDemo_Publication。

sa。



CNBlogsTest 插入一筆資料。


現象:記錄讀取代理報錯:
Cannot execute as the database principal because the principal "dbo" does not exist...
原因:資料庫擁有者 (dbo) 為空 (如從 SQL 2005 附加上來的資料庫)。
解決:變更資料庫擁有者為 sa:
ALTER AUTHORIZATION ON DATABASE::[CNBlogsDemo] TO sa;
-- 或 SSMS:資料庫屬性 → 檔案 → 擁有者 選擇 sa

現象:共享資料夾權限/工作群組驗證導致無法讀取。
解決:採用 **FTP 傳遞** (如上文設定),避開 SMB/權限問題。
交易式複寫 + FTP 快照 + Pull 訂閱,構建低延遲、可維護的 SQL Server 2008 資料庫同步備份架構。