問題背景
單表 FileDetail 同時承擔高頻寫入(增刪改)與大量查詢,鎖衝突導致查詢緩慢甚至死結。
解決架構:雙表 + 交易式複寫
- 發布端:寫入專用表
FileDetail_Write。
- 訂閱端:查詢專用表
FileDetail_Read,唯讀權限。
- 複寫將寫入端變更近即時傳遞至讀取端,物理隔離鎖競爭。
複寫三角色
- 發布者:來源資料庫實例,定義發行集/發行項。
- 散發者:中繼儲存變更命令,含散發資料庫。
- 訂閱者:接收變更的目標實例,可為多個。
SSMS 設定步驟精簡
- 啟用 SQL Server Agent(預設停用)。
- 右鍵資料庫 → 工作 → 複寫資料庫精靈(或手動:設定散發 → 新增發行集 → 新增訂閱)。
- 選擇 交易式發行集,指定文章(表/檢視/預存程序)。
- 快照代理初始化訂閱,後續記錄讀取代理傳遞交易。
跨網段部署補充
參考「SQL Server 複寫實戰二:跨網段(跨機房)部署」,需設定 VPN/防火牆、散發者放置位置、壓縮快照、Pull 訂閱模式。


