日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL Server數(shù)據(jù)庫和Oracle數(shù)據(jù)同步方案

下面的文章主要介紹的是SQL Server數(shù)據(jù)庫和Oracle數(shù)據(jù)庫的數(shù)據(jù)同步方案以及具體的解決過程,SQL Server數(shù)據(jù)庫與Oracle的數(shù)據(jù)同步方案與其實際的解決流程,其更多內(nèi)容請參考下文:

創(chuàng)新互聯(lián)建站服務項目包括赤壁網(wǎng)站建設、赤壁網(wǎng)站制作、赤壁網(wǎng)頁制作以及赤壁網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,赤壁網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到赤壁省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

說到同步,其實是靠"作業(yè)"定時調(diào)度存儲過程來操作數(shù)據(jù),增,刪,改,全在里面,結(jié)合觸發(fā)器,游標來實現(xiàn),關于作業(yè)調(diào)度,我使用了5秒運行一次來實行"秒級作業(yè)",這樣基本就算比較快的"同步"

我做的是SQL Server往Oracle端同步,先在SQL Server數(shù)據(jù)庫上建立往Oracle端的鏈接服務器,我用一個視圖"封裝"了一下鏈接服務器下的一張表。

 
 
 
  1. create view v_ora_PUBLISHLASTREC   
  2. as   
  3. select * from ORACLEDB..ROADSMS.PUBLISHLASTREC   

ORACLEDB鏈接服務器名,ROADSMS為表空間名,PUBLISHLASTREC 為數(shù)據(jù)表名

然后我們分別在SQL Server數(shù)據(jù)庫要同步的表上建立,insert,delete,update觸發(fā)器

腳本如下:

說明:modiid等于1為insert,2為delete,3為update

 
 
 
  1. create trigger trg_PUBLISHLASTREC_insert on PUBLISHLASTREC for insert   
  2. as   
  3. insert into dbo.PublishLastRec_SQL(modiid,SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime,IsExec)   
  4. select '1',SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime,'0' from inserted   
  5. create trigger trg_PUBLISHLASTREC_update on PUBLISHLASTREC for update   
  6. as   
  7. insert into dbo.PublishLastRec_SQL(modiid,SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime,IsExec)   
  8. select '3',SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime,'0' from inserted   
  9. create trigger trg_PUBLISHLASTREC_delete on PUBLISHLASTREC for delete   
  10. as   
  11. insert into dbo.PublishLastRec_SQL(modiid,SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime,IsExec)   
  12. select '2',SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime,'0' from deleted   

所有的操作都是把各幻表的數(shù)據(jù)插入到一張表中,上面統(tǒng)一插入的表為PublishLastRec_SQL,記錄下操作的標識,以標識該條記錄是插入,刪除,還是修改,modiid等于1為insert,2為delete,3為update,字段isexec標識該條記錄是否已處理,0為未執(zhí)行的,1為已執(zhí)行的

接著就是最關鍵的一步,存儲過程

腳本如下:

 
 
 
  1. ALTER proc pro_PublishLastRec_Sql   
  2. as   
  3.  
  4. declare @modiid int   
  5. declare @signalguid int   
  6. declare @areano numeric(1,0)   
  7. declare @signalnote varchar(50)   
  8. declare @areanote varchar(50)   
  9. declare @publishroadstatus varchar(20)   
  10. declare @publishtime varchar(50)   
  11. if not exists(select * from PublishLastRec_SQL where IsExec=0)   
  12. begin   
  13. truncate table PublishLastRec_SQL   
  14. return   
  15. end   
  16. declare cur_sql cursor for   
  17. select modiid,SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime from   
  18. PublishLastRec_SQL where IsExec=0 order by [id]--IsExec 0為未執(zhí)行的,1為已執(zhí)行的   
  19. open cur_sql   
  20. fetch next from cur_sql into @modiid,@SignalGUID,@AreaNo,@SignalNote,@AreaNote,@PublishRoadStatus,@PublishTime  
  21. while @@fetch_status=0   
  22. begin   
  23. if (@modiid=1) --插入   
  24. begin   
  25. insert into v_ora_PUBLISHLASTREC(SignalGUID,AreaNo,SignalNote,AreaNote,PublishRoadStatus,PublishTime)   
  26. values(@SignalGUID,@AreaNo,@SignalNote,@AreaNote,@PublishRoadStatus,@PublishTime)   
  27. end   
  28. if (@modiid=2) --刪除   
  29. begin   
  30. delete from v_ora_PUBLISHLASTREC where SignalGUID=@SignalGUID and AreaNo=@AreaNo   
  31. end   
  32. if (@modiid=3) --修改   
  33. begin   
  34. update v_ora_PUBLISHLASTREC   
  35. set SignalNote=@SignalNote,AreaNote=@AreaNote,PublishRoadStatus=@PublishRoadStatus,   
  36. PublishTime=@PublishTime   
  37. where SignalGUID=@SignalGUID and AreaNo=@AreaNo   
  38. end   
  39. update PublishLastRec_SQL   
  40. set IsExec=1   
  41. where current of cur_sql   
  42. fetch next from cur_sql into @modiid,@SignalGUID,@AreaNo,@SignalNote,@AreaNote,@PublishRoadStatus,@PublishTime   
  43. end   
  44. deallocate cur_sql   

該存儲過程使用游標逐行提取PublishLastRec_Sql記錄,根據(jù)modiid判斷不同的數(shù)據(jù)操作,該條記錄處理完畢后把isexec字段更新為1.

***是調(diào)用該存儲過程的作業(yè),我們先建一個一分鐘運行一次的作業(yè),然后在"步驟"的腳本中這樣寫:

 
 
 
  1. DECLARE @dt datetime   
  2. SET @dt = DATEADD(minute, -1, GETDATE())   
  3. WHILE @dt < GETDATE()   
  4. BEGIN   
  5. EXEC pro_PublishLastRec_Sql  

這里pro_PublishLastRec_Sql 為你要作業(yè)執(zhí)行的存儲過程

WAITFOR DELAY '00:00:05' -- 等待5秒, 根據(jù)你的需要設置即可

END

現(xiàn)在,我們即可以實現(xiàn)5秒執(zhí)行一次該存儲過程,做到5秒數(shù)據(jù)同步。

以上的相關內(nèi)容就是對SQL Server數(shù)據(jù)庫與Oracle的數(shù)據(jù)同步方案及解決過程的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server 添加數(shù)據(jù)庫的操作方案
  2. 加強SQL Server網(wǎng)絡連接安全性的操作流程
  3. SQL Server加密的實際操作步驟
  4. SQL Server 2000 數(shù)據(jù)倉庫中使用分區(qū)之分區(qū)設計
  5. SQL Server 2000 數(shù)據(jù)倉庫中使用分區(qū)之分區(qū)的優(yōu)點

網(wǎng)站標題:SQL Server數(shù)據(jù)庫和Oracle數(shù)據(jù)同步方案
文章路徑:http://www.5511xx.com/article/djhhdhe.html