鄒建:用SQL腳本實現數據庫合併複製

同步兩個數據庫的示例

有數據 srv1.庫名..author有字段:id,name,phone,

         srv2.庫名..author有字段:id,name,telphone,adress

要求: srv1.庫名..author增加記錄則srv1.庫名..author記錄增加

         srv1.庫名.author的phone字段更新,則srv1.庫名..author對應字段telphone更新

大致的處理步驟

1.在 srv1 上創建連接服務器,以便在 srv1 中操作 srv2,實現同步 exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql實例名或ip' exec sp_addlinkedsrvlogin 'srv2','false',null,'用戶名','密碼' go

2.在 srv1 和 srv2 這兩臺電腦中,啓動 msdtc(分佈式事務處理服務),並且設置爲自動啓動 我的電腦--控制面板--管理工具--服務--右鍵 Distributed Transaction Coordinator--屬性--啓動--並將啓動類型設置爲自動啓動 go

然後創建一個作業定時調用上面的同步處理存儲過程就行了 企業管理器 --管理 --SQL Server代理 --右鍵作業 --新建作業 --"常規"項中輸入作業名稱 --"步驟"項 --新建 --"步驟名"中輸入步驟名 --"類型"中選擇"Transact-SQL 腳本(TSQL)" --"數據庫"選擇執行命令的數據庫 --"命令"中輸入要執行的語句: exec p_process --確定 --"調度"項 --新建調度 --"名稱"中輸入調度名稱 --"調度類型"中選擇你的作業執行安排 --如果選擇"反覆出現" --點"更改"來設置你的時間安排 然後將SQL Agent服務啓動,並設置爲自動啓動,否則你的作業不會被執行 設置方法: 我的電腦--控制面板--管理工具--服務--右鍵 SQLSERVERAGENT--屬性--啓動類型--選擇"自動啓動"--確定.

3.實現同步處理的方法2,定時同步 在srv1中創建如下的同步處理存儲過程

create proc p_process as --更新修改過的數據

update b set name=i.name,telphone=i.telphone from srv2.庫名.dbo.author b,author i where b.id=i.id and (b.name <> i.name or b.telphone <> i.telphone)

插入新增的數據 insert srv2.庫名.dbo.author(id,name,telphone) select id,name,telphone from author i where not exists( select * from srv2.庫名.dbo.author where id=i.id)

刪除已經刪除的數據(如果需要的話) delete b from srv2.庫名.dbo.author b where not exists( select * from author where id=b.id) go

發佈了5 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章