/*
--同步兩個數據庫的示例
有數據
srv1.庫名..author有字段:id,name,phone,
srv2.庫名..author有字段:id,name,telphone,adress
要求:
srv1.庫名..author增加記錄則srv2.庫名..author記錄增加
srv1.庫名..author的phone字段更新,則srv2.庫名..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
有數據
srv1.庫名..author有字段:id,name,phone,
srv2.庫名..author有字段:id,name,telphone,adress
要求:
srv1.庫名..author增加記錄則srv2.庫名..author記錄增加
srv1.庫名..author的phone字段更新,則srv2.庫名..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
轉載:http://topic.csdn.net/u/20101102/22/e1e0b6b1-6612-4904-8176-b4a8450f3530.html
