分布式数据库的应用(一)
*--同步兩個數據庫的示例??
???
有數據??
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??
???
???
--3.實現同步處理 ---觸發器同步?????
--a.在srv1..author中創建觸發器,實現數據即時同步??
--新增同步??
create?? trigger?? tr_insert_author?? on?? author??
for?? insert??
as??
set?? xact_abort?? on??
insert?? srv2.庫名.dbo.author(id,name,telphone)??
select?? id,name,telphone?? from?? inserted??
go??
???
--修改同步??
create?? trigger?? tr_update_author?? on?? author??
for?? update??
as??
set?? xact_abort?? on??
update?? b?? set?? name=i.name,telphone=i.telphone??
from?? srv2.庫名.dbo.author?? b,inserted?? i??
where?? b.id=i.id??
go??
???
--刪除同步??
create?? trigger?? tr_delete_author?? on?? author??
for?? delete??
as??
set?? xact_abort?? on??
delete?? b????
from?? srv2.庫名.dbo.author?? b,deleted?? d??
where?? b.id=d.id??
go??
???
???
???
--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??
???
???
???
--然后創建一個作業定時調用上面的同步處理存儲過程就行了??
???
企業管理器??
--管理??
--SQL?? Server代理??
--右鍵作業??
--新建作業??
--"常規"項中輸入作業名稱??
--"步驟"項??
--新建??
--"步驟名"中輸入步驟名??
--"類型"中選擇"Transact-SQL?? 腳本(TSQL)"??
--"數據庫"選擇執行命令的數據庫??
--"命令"中輸入要執行的語句:?? exec?? p_process????
--確定??
--"調度"項??
--新建調度??
--"名稱"中輸入調度名稱??
--"調度類型"中選擇你的作業執行安排??
--如果選擇"反復出現"??
--點"更改"來設置你的時間安排??
???
???
然后將SQL?? Agent服務啟動,并設置為自動啟動,否則你的作業不會被執行??
???
設置方法:??
我的電腦--控制面板--管理工具--服務--右鍵?? SQLSERVERAGENT--屬性--啟動類型--選擇"自動啟動"--確定.
轉載于:https://www.cnblogs.com/wsmltyl/archive/2010/06/10/1755695.html
總結
以上是生活随笔為你收集整理的分布式数据库的应用(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让 C#智能注释时允许换行
- 下一篇: 耍了一下 UncaughtErrorEv