成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數據庫和Oracle數據同步方案

數據庫 SQL Server
以下的文章主要描述的是SQL Server數據庫和Oracle數據庫的數據同步方案以及具體的解決過程,以下就是文章的主要內容講述。

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

說到同步,其實是靠"作業"定時調度存儲過程來操作數據,增,刪,改,全在里面,結合觸發器,游標來實現,關于作業調度,我使用了5秒運行一次來實行"秒級作業",這樣基本就算比較快的"同步"

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

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

ORACLEDB鏈接服務器名,ROADSMS為表空間名,PUBLISHLASTREC 為數據表名

然后我們分別在SQL Server數據庫要同步的表上建立,insert,delete,update觸發器

腳本如下:

說明: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   

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

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

腳本如下:

  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為未執行的,1為已執行的   
  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記錄,根據modiid判斷不同的數據操作,該條記錄處理完畢后把isexec字段更新為1.

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

  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 為你要作業執行的存儲過程

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

END

現在,我們即可以實現5秒執行一次該存儲過程,做到5秒數據同步。

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

【編輯推薦】

  1. SQL Server 添加數據庫的操作方案
  2. 加強SQL Server網絡連接安全性的操作流程
  3. SQL Server加密的實際操作步驟
  4. SQL Server 2000 數據倉庫中使用分區之分區設計
  5. SQL Server 2000 數據倉庫中使用分區之分區的優點
責任編輯:佚名 來源: 酷殼
相關推薦

2010-07-13 16:20:30

SQL Server數

2010-05-10 18:54:12

Oracle數據庫索引

2022-11-04 08:34:27

Oracle數據庫

2010-04-19 10:00:02

Oracle SQL

2010-08-27 09:59:51

SQL Server

2010-07-08 11:05:14

SQL Server數

2009-03-27 13:15:20

OracleSQL Server鏡像

2011-05-26 14:07:11

SQL ServerOracle數據庫鏡像對比

2010-07-15 17:28:50

SQL Server

2011-09-07 15:11:31

SQL Server同步

2011-04-18 10:00:32

SQL Server數據庫遷移

2010-07-22 13:52:24

2009-11-18 16:16:51

Oracle數據庫

2010-10-26 15:54:02

連接oracle數據庫

2010-06-30 16:48:19

SQL Server數

2011-07-13 16:19:54

存儲過程SQL Server數

2011-03-31 14:33:57

SQL Server最小宕機遷移

2010-07-01 15:44:22

SQL Server數

2024-10-30 08:15:18

2021-05-17 06:57:34

SQLServer數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产91av视频在线观看 | 日韩综合在线播放 | 区一区二在线观看 | 日韩国产在线 | 日韩美av | 成人福利网 | 国产一级淫片免费视频 | 日本免费黄色一级片 | 亚洲欧美日韩精品久久亚洲区 | 国产成人jvid在线播放 | 免费精品视频在线观看 | 在线观看h视频 | 亚洲欧洲成人av每日更新 | 国产视频一区二区在线观看 | 精品欧美黑人一区二区三区 | 欧美成人激情 | 国产精品区二区三区日本 | 亚洲精品中文字幕在线 | 一级欧美一级日韩片 | 欧美在线免费 | 天堂在线中文字幕 | 99久久99 | 网站黄色av| 午夜精品一区二区三区在线观看 | 国产农村妇女毛片精品久久麻豆 | 91中文字幕在线观看 | 天天干天天草 | 久久久久国产精品一区三寸 | 中文字幕乱码一区二区三区 | 久久这里只有 | 成人av在线播放 | 一级毛片观看 | 日韩一二三区视频 | 午夜无码国产理论在线 | 麻豆精品国产91久久久久久 | 亚洲一二视频 | 成人午夜激情 | 免费成人av | 免费在线观看毛片 | 午夜黄色影院 | 亚洲国产精品成人无久久精品 |