用儲存過程或觸發器 作業排程進行資料庫同步

2021-04-12 15:37:43 字數 2512 閱讀 5295

/*--同步兩個資料庫的示例  引用(鄒建)

測試環境及同步要求:

有資料庫伺服器srv1和srv2,兩台電腦能互相訪問,有資料

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

asset 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

asset 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

asset 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--屬性--啟動型別--選擇"自動啟動"--確定.

觸發器 函式或儲存過程

觸發器是一種特殊型別的儲存過程,主要是通過事件進行觸發被自動呼叫執行的。而普通儲存過程可以通過儲存過程的名稱被呼叫。觸發器對錶進行插入 更新 刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的區別是 觸發器是當對某乙個表進行操作。諸如 upd...

觸發器 儲存過程

1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...

儲存過程 觸發器

觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。觸發器的主要作用就是其能夠實現由主鍵和外來鍵...