sql2000和sql2005數據同步代碼

前提:有兩個服務器,分別是sql2000和sql2005,兩個中都含有一個叫test的數據庫,且裏面的數據表和結構都是徹底相同sql

1,首先添加個人作法是在server1上創建一個連接服務器,直接指向到server2,數據庫

我是在sql2000上創建一個連接服務器,指向sql2005,方便在sql2000服務器上直接操做sql2005服務器

exec   sp_addlinkedserver     'srv2','','SQLOLEDB','srv2的sql實例名或ip'  
exec   sp_addlinkedsrvlogin   'srv2','false',null,'用戶名','密碼'  
go 

這樣咱們就能夠用 srv2.庫名.dbo.表名  來操做sql2005服務器了分佈式

2,啓動   msdtc(分佈式事務處理服務)工具

個人電腦--控制面板--管理工具--服務--右鍵   Distributed   Transaction   Coordinator--屬性--啓動--並將啓動類型設置爲自動啓動 
網站

3,實現數據同步,有2中方法spa

    1,觸發器代理

    2,存儲過程加事務code

   觸發器server

--新增同步
--id爲主鍵,自增
create   trigger   tr_insert_A   on   A  
  for   insert  
  as  
  set   xact_abort   on  
  insert   srv2.庫名.dbo.A(a,b,c,)  
  select   a,b,c   from   inserted  
  go  

  
    
  --修改同步  
  create   trigger   tr_update_A   on   A 
  for   update  
  as  
  set   xact_abort   on  
  update   b   set   a=i.a,b=i.b,c=i.c
  from   srv2.庫名.dbo.A   b,inserted   i  
  where   b.id=i.id  
  go  
    
  --刪除同步  
  create   trigger   tr_delete_A   on   A
  for   delete  
  as  
  set   xact_abort   on  
  delete   b    
  from   srv2.庫名.dbo.A   b,deleted   d  
  where   b.id=d.id  
  go  

 存儲過程加事務

--存儲過程
create   proc   p_process    
  as  
  --更新修改過的數據  
  update   b   set   bill_num=i.bill_num,receipt_num=i.receipt_num,sheet_id=i.sheet_id,discount,meals,All_money,income,zhushi,notes,addtime  
  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--屬性--啓動類型--選擇"自動啓動"--肯定. 

 

 

ps.

  觸發器同步數據比較快速,可是會使網站變慢,

 而存儲過程加事務的方式同步數據不是很及時,可是能夠把執行時間設定在網站流量少的時候,不會影響網站的反應速度

相關文章
相關標籤/搜索