精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SQL Server實時同步更新遠程數據庫遇到的問題

數據庫 SQL Server
TableA與TableB結構相同,但數據數量不一定相同,應為有可能TableC也在更新TableB。由于數據更新不頻繁,為簡單起見想到使用了觸發器Tirgger。

工作中遇到這樣的情況,需要在更新表TableA(位于服務器ServerA 172.16.8.100中的庫DatabaseA)同時更新TableB(位于服務器ServerB 172.16.8.101中的庫DatabaseB)。

TableA與TableB結構相同,但數據數量不一定相同,應為有可能TableC也在更新TableB。由于數據更新不頻繁,為簡單起見想到使用了觸發器Tirgger。記錄一下遇到的一些問題:

1. 訪問異地數據庫

在ServerA 中創建指向ServerB的鏈接服務器,并做好賬號映射。addlinkedserver存儲過程創建一個鏈接服務器,參數詳情參見官方文檔。第1個參數LNK_ServerA是自定義的名稱;第2參數產品名稱,如果是SQL Server不用提供;第3個參數是驅動類型;第4個參數是數據源,這里寫SQL Server服務器地址

  1. exec sp_addlinkedserver 'LNK_ServerB_DatabaseB','','SQLNCLI','172.16.8.101' 

配置鏈接服務器后,默認使用同一本地賬號登陸遠程數據庫,如果賬號有不同,還需要進行賬號映射。sp_addlinkedsrvlogin參數詳情參見官方文檔。第1個參數同上;第2個參數false即使用后面參數提供的用戶密碼登陸;第3個參數null使所有本地賬號都可以使用后面的用戶密碼來登陸鏈接服務器,如果第3個參數設置為一個本地SQL Server登陸用戶名,那么只有這個用戶才可以使用遠程賬號登陸鏈接服務器;***兩個是登錄遠程服務器的用戶和密碼。

  1. exec sp_addlinkedsrvlogin 'LNK_ServerB_DatabaseB','false',null,'user','password' 

如果要刪除以上配置可以如下

  1. exec sp_droplinkedsrvlogin 'LNK_ServerB_DatabaseB',null 
  2. exec sp_dropserver 'LNK_ServerB_DatabaseB','droplogins' 

上面的配置在SQL Server Management Studio管理器里Server Objects下LinkedServers可以查詢到,如果一切鏈接正常,可以直接打開鏈接服務器上的庫表

值得注意的是以上兩個存儲過程不能出現在觸發器代碼中,而是事先在服務器ServerA中運行完成配置,否則觸發器隱式事務的要求會報錯“The procedure 'sys.sp_addlinkedserver' cannot be executed within a transaction.”

2. 配置分布式事務

SQL Server的觸發器是隱式使用事務的,鏈接服務器是遠程服務器,需要在本地服務器和遠程服務器之間開啟分布式事務處理,否則會報“The partner transaction manager has disabled its support for remote/network transactions”的錯誤。我在ServerA和ServerB中都開啟分布式事務協調器,并進行適當配置,以支持分布式事務。ServerA和ServerB都是Windows Server 2012 R2,其他版本服務器類似。

(1)首先在Services.msc中確認Distributed Transaction Coordinator已經開啟,其他版本的服務器不一定默認安裝,需要安裝windows features的方式先進行該特性的安裝。


 

(2)在服務器管理工具Administrative Tools中找到Component Services,在Local DTC中屬性Security選項卡中配置如下,打開相關安全設置,完成后會重啟服務,也有文檔稱需要重啟服務器,但是至少2012 R2不用。

(3)配置防火墻,Inbound和Outbound都打開

3. 數據庫字段text, ntext的處理

業務中表TableA中有一個Content字段是ntext類型,同步到TableB時需要對內容做一些替換處理。對于text和ntext類型是一個過時的類型,微軟官方建議用(N)VARCHAR(MAX)替換,可查閱這里。今后設計時可以考慮,這里我們考慮對ntext進行處理。

但是在觸發器中,inserted和deleted表都是不允許對text/ntext/image類型進行處理的,這里我們采用一個曲線救國的辦法,從數據庫中把記錄讀取到臨時表中,然后通過textptr和patindex函數和updatetext命令完成字符串替換處理

  1. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#temp_tablea'))  
  2.     drop table #temp_tablea 
  3. select * into #temp_tablea from TableA where ID = @ID 
  4. declare @s varchar(200),@d varchar(200) 
  5. select @s='/_target/',@d='/_replacement/' 
  6. declare @p varbinary(16),@postion int,@l int 
  7. select @p=textptr(Content),@l=len(@s),@postion=patindex('%'+@s+'%',Content)-1 from #temp_tablea 
  8. while @postion>0 
  9. begin 
  10.     updatetext #temp_tablea.Content @p @postion @l @d 
  11.     select @postion=patindex('%'+@s+'%',Content)-1 from #temp_tablea 

 

特別注意以上代碼對于text類型處理中文時會出問題,由于text存儲non-unicode的數據,patindex會將中文字符解釋為1個字符,而updatetext命令卻將中文字符解釋為2個字符。SQL Server 2005以上版本可以這樣做替換:

  1. update #temp_tablea set Content=cast(replace(cast(Content as nvarchar(max)),@s,@d) as text) 

4. 執行遠程數據庫操作

當配置鏈接服務器時,我們可以直接訪問遠程數據庫表了,如下

  1. insert into LNK_ServerB_DatabaseB.DatabaseB.dbo.TableB ... 
  2. update LNK_ServerB_DatabaseB.DatabaseB.dbo.TableB set ... 

但簡陋的SQL編輯器往往會對語法報錯,另外為方便編程,我們希望通過exec sp_executesql的方式獲得更多的靈活性。其實exec就可以直接執行sql語句,但如果有返回值就比較困難了。如下,從遠程服務器上通過ID查詢表TableB后返回Name,sp_executesql存儲過程可以使用output關鍵字定義變量為返回變量,其中@Name output為返回變量,@ID則是傳入變量。

  1. declare @sql nvarchar(500), @Name nvarchar(50),@ID nvarchar(40) 
  2. set @SQL=N'select @Name=Name from LNK_ServerB_DatabaseB.DatabaseB.dbo.TableB where ID=@ID' 
  3. exec sp_executesql @SQL,N'@Name nvarchar(50) output,@ID nvarchar(40)',@Name output,@ID 

另外exec直接執行sql語句,本質上是執行拼接后的sql字符串,有時將變量拼接進字符串會困難的多(到底需要幾個單引號),而sp_executesql則清晰多了

  1. declare @SQL nvarchar(500),@Name nvarchar(50),@Count int,@ID nvarchar(40) 
  2. set @Name=N'Cat' 
  3. set @Count=0 
  4. set @ID=N'{00000000-0000-0000-0000-000000000000}' 
  5. set @SQL=N'update TableA set Name='''+@Name+''', Count='+@Count+' where ID='''+@ID+'''' 
  6. exec(@SQL) 
  7. set @SQL=N'update TableA set Name=@Name,Count=@Count where ID=@ID' 
  8. exec sp_executesql @SQL, N'@Name nvarchar(50),@Count int,@ID nvarchar(40)',@Name,@Count,@ID 
責任編輯:武曉燕 來源: 博客園
相關推薦

2010-07-01 15:44:22

SQL Server數

2024-10-30 08:15:18

2010-05-24 18:05:12

MySQL數據庫

2009-11-18 16:16:51

Oracle數據庫

2010-08-27 09:59:51

SQL Server

2010-07-22 11:17:52

SQL Server數

2011-09-07 15:11:31

SQL Server同步

2009-05-26 10:21:07

2010-07-15 17:28:50

SQL Server

2011-07-13 16:19:54

存儲過程SQL Server數

2011-01-19 09:51:25

SQL Server

2011-08-15 16:58:34

SQL Server遠程查詢批量導入數據

2011-04-06 16:15:21

SQL Server數簡體繁體

2010-07-06 14:40:15

解決SQL Serve

2010-07-08 11:05:14

SQL Server數

2020-09-21 11:30:28

CanalMySQL數據庫

2019-10-08 15:54:42

SQL數據庫技術

2011-03-24 09:24:08

SQL Server數還原

2011-03-24 09:07:11

SQL Server數備份

2011-03-24 09:45:34

SQL Server數恢復
點贊
收藏

51CTO技術棧公眾號

亚洲精品国产精品自产a区红杏吧| 成年人网站91| 另类图片亚洲另类| 手机av在线网| 波多野结衣在线高清| 91麻豆成人久久精品二区三区| 国产精品福利网站| 欧美极品视频在线观看| 欧美精美视频| 欧美变态tickling挠脚心| 凹凸日日摸日日碰夜夜爽1| 毛片激情在线观看| 久久一二三国产| 97超碰资源| 国产精品成人久久久| 欧美私人啪啪vps| 中文字幕精品网| 欧美 变态 另类 人妖| 国产一区二区在线观| 欧美性xxxx极品hd满灌| 一本大道东京热无码aⅴ| 国内三级在线观看| 成人免费毛片a| 亚洲一区二区中文| 日韩不卡高清视频| 国产精品普通话对白| 欧美巨乳在线观看| 中文字幕无码日韩专区免费 | av在线电影免费观看| 成人一区二区三区中文字幕| 国产欧美精品va在线观看| 日韩 欧美 综合| 欧美a级在线| xvideos成人免费中文版| 亚洲日本精品视频| 亚洲黄色录像| 亚洲另类激情图| 丰满人妻一区二区三区免费视频棣| 国产精品久久久久久久久免费高清| 黄色成人av在线| 隔壁人妻偷人bd中字| av免费网站在线| 亚洲色欲色欲www在线观看| 日韩一区不卡| 国产精品毛片一区二区三区四区| 91免费观看视频在线| 国产伦精品一区二区三区高清版| 国内老熟妇对白hdxxxx| 国产在线视频精品一区| 91久久国产综合久久91精品网站 | 乱h高h女3p含苞待放| 欧美视频免费| 中文字幕不卡在线视频极品| 久久亚洲无码视频| 99精品视频免费观看视频| 日韩在线播放av| 一级片久久久久| 国产精品中文字幕亚洲欧美| 日韩av在线免费观看| 国产chinese中国hdxxxx| 国产精品欧美大片| 日韩精品在线看| 国产全是老熟女太爽了| 国产一区2区| 在线a欧美视频| 亚洲天堂精品一区| 天天做天天爱综合| 欧美高清激情视频| 国产精品一区二区6| 亚洲女同在线| 国产精品久久久久久av| 中国女人真人一级毛片| 精品中文av资源站在线观看| av日韩中文字幕| 人妻精品一区一区三区蜜桃91| 91影院在线观看| 欧美一区二区三区四区夜夜大片 | 国产在线观看你懂的| 99精品国产在热久久婷婷| 欧美最猛黑人xxxx黑人猛叫黄| 精品不卡一区二区| 麻豆精品精品国产自在97香蕉 | 精品国产第一国产综合精品| 日韩精品在线一区二区| 黄色录像a级片| 欧洲grand老妇人| 久久久精品999| 国产一级片网址| 噜噜噜躁狠狠躁狠狠精品视频 | 国产+成+人+亚洲欧洲在线| 亚洲国产精品小视频| 女人黄色一级片| 欧美三级午夜理伦三级中文幕| 欧美一区二区大胆人体摄影专业网站| 中日精品一色哟哟| 成人高清视频在线| 亚洲国产精品一区在线观看不卡| 黄色网页在线免费看| 大桥未久av一区二区三区| 五月婷婷六月丁香激情| 国产精品调教视频| 最新日韩中文字幕| 亚洲一区欧美在线| 狠狠v欧美v日韩v亚洲ⅴ| 精品国产乱码久久久久久88av| 成a人v在线播放| 亚洲香肠在线观看| 羞羞的视频在线| 九九亚洲精品| 欧美激情区在线播放| 中文字幕+乱码+中文乱码91| 成人丝袜18视频在线观看| 亚洲草草视频| 亚洲性受xxx喷奶水| 日韩你懂的电影在线观看| 精品人妻无码一区| 亚洲美女毛片| 91精品久久香蕉国产线看观看| 日韩私人影院| 亚洲国产视频直播| 亚洲天堂av一区二区三区| 欧美人与牛zoz0性行为| 91精品国产高清| 国产v在线观看| 国产精品久久午夜| 91在线视频观看免费| 欧美久久香蕉| 欧美黑人巨大xxx极品| 亚洲天堂手机在线| 国产欧美日韩一区二区三区在线观看| 久久久久久免费看| 日韩一区二区三区精品| 久久精品国产清自在天天线| www.久久视频| 久久精品亚洲乱码伦伦中文| 免费国产a级片| jazzjazz国产精品久久| 另类视频在线观看| 99精品免费观看| 中文字幕亚洲区| 在线观看国产福利| 久久日文中文字幕乱码| 国产精品久在线观看| 国产精品一区在线看| 91国偷自产一区二区三区观看| 大地资源二中文在线影视观看| 黄色亚洲在线| 国产精品theporn88| 欧美24videosex性欧美| 精品成人a区在线观看| 国产在线欧美在线| 91视频免费观看| 国产成人亚洲精品无码h在线| 日韩极品在线| 青青草精品毛片| 久蕉在线视频| 欧美日韩视频在线一区二区| 免费看的黄色录像| 国产一区二区三区在线观看免费 | 波多野结衣久草一区| 直接在线观看的三级网址| 日韩欧美一区二区视频| 精国产品一区二区三区a片| 国产成人一区二区精品非洲| 免费人成在线观看视频播放| 欧美黑白配在线| 日本午夜在线亚洲.国产| 国产一二在线观看| 欧美日韩精品一区二区天天拍小说 | 99久久er热在这里只有精品15| 欧美成人免费在线观看视频| 亚洲欧洲色图| 国产日韩欧美在线观看| 伊人在我在线看导航| 亚洲精品久久在线| 日本视频www色| 亚洲欧美日韩在线播放| 在线xxxxx| 噜噜噜91成人网| 欧美日韩一区二区三区电影| 国产精品白丝一区二区三区| 国产成人a亚洲精品| 成人在线播放免费观看| 日韩精品视频在线| 亚洲天堂aaa| 亚洲国产aⅴ成人精品无吗| 亚洲а∨天堂久久精品2021| 国产一区二区三区香蕉| 国产乱子伦农村叉叉叉| 欧美大人香蕉在线| 国产三区精品| 欧美成人aaa| 久久久伊人日本| 98在线视频| 亚洲国产中文字幕在线观看| 91精品在线视频观看| 欧美日韩国产精品一区| 色婷婷粉嫩av| 91尤物视频在线观看| 精品人妻一区二区三| 久久资源在线| 日韩小视频网站| 成人看的羞羞网站| 国产综合色一区二区三区| 韩国理伦片久久电影网| 亚州精品天堂中文字幕| 国产精品剧情一区二区在线观看| 亚洲美女免费精品视频在线观看| 国产伦理一区二区| 欧洲av在线精品| 国产成人在线免费视频| 亚洲蜜臀av乱码久久精品| 精品欧美一区二区久久久| 粉嫩一区二区三区性色av| 亚洲这里只有精品| 久久成人亚洲| heyzo亚洲| 亚洲视频一区| 影音先锋成人资源网站| 日本在线电影一区二区三区| 久久精品国产精品青草色艺| 日韩精品久久久久久久软件91| 国产精品 欧美在线| 神马久久午夜| 亚州成人av在线| www.综合网.com| 久久在线精品视频| 欧美jizzhd69巨大| 中文字幕日韩高清| av在线之家电影网站| 国产丝袜一区二区| 午夜av免费观看| 亚洲第一页在线| 隣の若妻さん波多野结衣| 91精品国产一区二区人妖| 中文字幕av久久爽| 欧美日韩在线三区| 国产又粗又猛又爽又| 日本久久电影网| 亚洲AV无码成人精品区东京热| 亚洲成人免费视频| 国产一级片播放| 亚洲成a人v欧美综合天堂下载| 久久久.www| 亚洲成人免费影院| 日韩精品在线观看免费| 午夜精品久久久久影视| 久草国产精品视频| 欧美日韩国产中文字幕| 国产午夜免费福利| 在线观看国产日韩| 中文字幕+乱码+中文乱码91| 欧美日韩中字一区| 国产丝袜在线视频| 欧美成人女星排名| 欧日韩在线视频| 日韩的一区二区| 国产高清视频免费最新在线| 在线观看欧美日韩国产| 免费av毛片在线看| 欧美日产国产成人免费图片| 伦理av在线| 97超碰国产精品女人人人爽| 日韩电影大全网站| 国产日韩亚洲欧美| 99精品国产高清一区二区麻豆| 国产美女精品久久久| 天海翼精品一区二区三区| 日韩成人av电影在线| 91亚洲国产| 999一区二区三区| 老鸭窝91久久精品色噜噜导演| 亚洲人辣妹窥探嘘嘘| 国产一区二区影院| 午夜一区二区三区免费| 国产清纯美女被跳蛋高潮一区二区久久w | aa视频在线播放| 蜜桃视频一区| 日韩久久久久久久久久久| av亚洲精华国产精华| 天天舔天天操天天干| 亚洲免费观看高清在线观看| 国产成人在线播放视频| 欧美丝袜自拍制服另类| 国产suv一区二区| 亚洲欧美视频在线| av网站在线看| 日本人成精品视频在线| 久久中文字幕一区二区| 欧美aaaaa喷水| 亚洲成人日韩| 久草青青在线观看| 国产精品一区二区黑丝| 魔女鞋交玉足榨精调教| 亚洲视频中文字幕| 日韩一区二区视频在线| 777久久久精品| 奇米影视888狠狠狠777不卡| 久久国产一区二区三区| 性欧美freesex顶级少妇| 91网在线免费观看| 免费成人av| 欧妇女乱妇女乱视频| 日本v片在线高清不卡在线观看| 亚洲精品鲁一鲁一区二区三区 | 美女视频免费一区| 99精品一区二区三区无码吞精 | 国产精品成人av久久| 欧美日韩你懂得| 亚洲欧美综合在线观看| 九九九久久久久久| 欧美jizz18| 日韩欧美亚洲v片| 99精品国产在热久久婷婷| 人妻少妇偷人精品久久久任期| 国产欧美一区视频| 国产91精品一区| 亚洲国产欧美日韩精品| 最爽无遮挡行房视频在线| 国产精品大陆在线观看| 欧美久久精品| 欧美在线一区视频| 国产精品亚洲午夜一区二区三区| 五月婷婷婷婷婷| 欧美在线高清视频| 九色视频在线观看免费播放| 久久人人看视频| 88久久精品| 亚洲色图都市激情| 狠狠色狠狠色综合系列| 欧美成人另类视频| 在线亚洲欧美专区二区| 男人的天堂在线免费视频| 午夜精品一区二区三区av| 亚洲一区二区三区四区电影| 中文字幕乱码一区二区三区| 免费av成人在线| 中国美女乱淫免费看视频| 午夜av一区二区三区| 人妻无码中文字幕| 97视频免费在线观看| 国产伦精品一区二区三区免费优势| 亚洲国产一二三精品无码| 韩国av一区二区三区在线观看| 午夜成人亚洲理伦片在线观看| 欧美日韩一区小说| 五月婷婷在线视频| 成人久久一区二区| 大片网站久久| www.cao超碰| 亚洲视频精选在线| 亚洲乱码精品久久久久..| 欧美精品video| 国产一区调教| 美女日批免费视频| 久久久久免费观看| 亚洲天堂2021av| 久久久999国产精品| 日韩中文字幕一区二区高清99| 欧美性猛交内射兽交老熟妇| 懂色av噜噜一区二区三区av| 日韩网红少妇无码视频香港| 亚洲美女av在线播放| 六九午夜精品视频| 精品国产一区二区三区在线| 成人妖精视频yjsp地址| 精品成人av一区二区在线播放| 亚洲毛片在线看| 日本免费一区二区三区等视频| 日本一区二区三区四区五区六区| 国产成人在线网站| 国产精品777777| 日韩中文字幕av| 日韩欧美中文字幕在线视频 | 欧美做爰啪啪xxxⅹ性| 日韩视频一区二区三区在线播放 | 成人精品视频99在线观看免费| 亚洲91视频| 亚洲精品乱码久久| 欧美在线你懂得| 中文字幕有码在线观看| 欧美久久电影| 国产福利视频一区二区三区| 久久久久久少妇| 久久久成人av| 日本精品影院| 中文字幕第一页在线视频| 亚洲成人一二三| 天堂中文а√在线| 国产伦精品一区二区三区高清 | 国产精品影片在线观看| 欧美体内she精视频在线观看| 一区二区三区少妇| 在线综合+亚洲+欧美中文字幕| 九色porny自拍视频在线播放 | 亚洲激情二区| 国产又粗又长又黄的视频| 亚洲国产97在线精品一区| 日韩午夜电影免费看| 欧美网站免费观看|