国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 01:04:50
字體:
來源:轉載
供稿:網友

工作中遇到這樣的情況,需要在更新表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服務器地址

exec sp_addlinkedserver 'LNK_ServerB_DatabaseB','','SQLNCLI','172.16.8.101'

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

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

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

exec sp_droplinkedsrvlogin 'LNK_ServerB_DatabaseB',nullexec sp_dropserver 'LNK_ServerB_DatabaseB','droplogins'

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

sqlserver,實時同步更新,遠程數據庫

值得注意的是以上兩個存儲過程不能出現在觸發器代碼中,而是事先在服務器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的方式先進行該特性的安裝。

sqlserver,實時同步更新,遠程數據庫

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

sqlserver,實時同步更新,遠程數據庫

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

sqlserver,實時同步更新,遠程數據庫

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

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

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

if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#temp_tablea'))  drop table #temp_tableaselect * into #temp_tablea from TableA where ID = @IDdeclare @s varchar(200),@d varchar(200)select @s='="/_target/',@d='="/_replacement/'declare @p varbinary(16),@postion int,@l intselect @p=textptr(Content),@l=len(@s),@postion=patindex('%'+@s+'%',Content)+1 from #temp_tableawhile @postion>1begin updatetext #temp_tablea.Content @p @postion @l @d select @postion=patindex('%'+@s+'%',Content)+1 from #temp_tableaend

4. 執行遠程數據庫操作

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

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

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

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

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

declare @SQL nvarchar(500),@Name nvarchar(50),@Count int,@ID nvarchar(40)set @Name=N'Cat'set @Count=0set @ID=N'{00000000-0000-0000-0000-000000000000}'set @SQL=N'update TableA set Name='''+@Name+''', Count='+@Count+' where ID='''+@ID+''''exec(@SQL)set @SQL=N'update TableA set Name=@Name,Count=@Count where ID=@ID'exec sp_executesql @SQL, N'@Name nvarchar(50),@Count int,@ID nvarchar(40)',@Name,@Count,@ID

以上所述是小編給大家介紹的SQL Server實時同步更新遠程數據庫遇到的問題小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产高清在线| 尤物视频网站在线观看| 五月天天在线| 中文字幕av中文字幕| www.xxx黄| 久久一本精品| 久久国产情侣| 国产区在线看| 精品国产高清自在线一区二区三区| 国产二区视频| 欧美性xxxx交| 国产区在线观看| 先锋影音av中文字幕| 日本视频在线观看一区二区三区| 精品一区二区三区在线成人| 97在线超碰| 天天操中文字幕视频| 另类综合图区| 国产精品美女一区二区视频| 精品999视频| 日本一卡二卡四卡精品| 99热在线免费播放| 在线观看视频污| 国产卡1卡2卡三卡在线| 精品推荐国产麻豆剧传媒| 超碰在线免费播放| 99re在线视频| 国产视频中文字幕| 欧美性猛交xxxxbbbb| 国产三级视频在线播放线观看| 亚洲男人的天堂成人| 国产三级香港三韩国三级| 日本成a人片在线观看| 综合激情亚洲| 奇米影视狠狠狠| 国产视频二区三区| 欧美黑人乱大交ⅹxxxxx| 国产精品入口麻豆免费看| 开心丁香婷婷深爱五月| 亚洲欧美久久婷婷爱综合一区天堂| 国产小视频在线高清播放| 国产在线第一页| 二人午夜免费观看在线视频| 在线视频xx| 国产精品久久久久久福利| 九九热精品在线视频| www.狠狠艹| www.91在线播放| 人人在线视频| 黄色av网站在线免费观看| 亚洲an天堂an在线观看| 国产成人精品久久一区二区小说| 国产理论片免费观看| 国产在线视频精品视频免费看| 不卡av免费观看| 久热国产在线视频| 国产理论电影在线| 国产jizz| 美女av在线播放| 超碰在线人人| 天堂资源在线中文| 国产黄色小视频| sese在线视频| 国产精品外围在线观看| 国产精品入口麻豆免费| 在线午夜影院| 久艹在线视频| 国产xxx在线| 四虎www视频| 自拍亚洲国产| 在线观看的av| 丁香在线视频| 在线中文视频| 国产免费麻豆视频| 伊人色综合网| 久久综合精品视频| 99久热re在线精彩视频| 黄色av网站在线免费观看| 精品国产一区二区三区不卡在线| 可以免费看污视频的网站| 97操碰视频| 国产探花在线观看| www.蜜桃av| 精品卡一卡卡2卡3网站| 五月伊人六月| 久久久久久久久久久久久91| 在线三级av| 国产高清在线a视频大全| 国产原创在线播放| 在线观看精品视频一区二区三区| 麻豆国产在线视频| 在线亚洲电影| 2021av天天| 国产黄大片在线观看画质优化| 久青青在线观看视频国产| 在线黄色国产电影| 精品一区二区三区在线观看l| 超碰免费在线| 欧美精品小视频| 欧洲有码在线视频| 亚洲成a人v欧美综合天堂麻豆| 精品欧美日韩一区二区| 国产黄色片在线观看| 2018av男人天堂| 天堂资源最新在线| 激情综合丁香| 国产农村一级特黄α**毛片| 不卡av免费观看| 九九热精品在线视频| av在线日韩国产精品| 国产精品美女一区二区视频| 国产精品186在线观看在线播放| eeuss影院在线播放| 国产91久久久久蜜臀青青天草二| 国产高清在线看| www.久草.com| 伊人免费视频| 资源视频在线播放免费| 国产不卡视频| 1区2区3区在线| 狠狠狠综合7777久夜色撩人| 国产精品入口麻豆电影| 快射av在线播放一区| 四虎一区二区三区| 国产精品外围在线观看| 成人超碰在线| 国产福利热线视频| 国产www在线观看| 国产一二区在线观看| 在线91av| 91午夜在线| 国产一级又黄| 尤物在线视频观看| 91国内精品在线视频| 亚洲国产成人综合| 日本亚洲精品| 日本成a人片在线观看| 国内精品一区视频| 性网站在线看| 天天操天天艹| 欧美视频免费一区二区三区| 国产色在线观看| 国产wwww| 免费观看久久久久| 国产黄色高清在线| 国产在线传媒| a级片国产精品自在拍在线播放| 免费视频中文字幕| 影音先锋中文字幕在线| 天天操天天射天天插| 国产精品一区二区三区高清在线 | 亚洲国产日韩成人综合天堂| av中文资源在线| 精品久久av| 国产精品186在线观看在线播放 | 欧美另类在线视频| 精品麻豆国产| 国产在线播放av| 蜜桃av在线免费观看| 国产日韩欧美精品一区二区三区 | 国产精品入口麻豆高清| 国产香蕉视频在线看| www.夜夜操| av在线你懂的| 国产专区在线| 天天插天天干| 懂色av一区| 亚洲伊人网在线观看| 国产小视频在线| 黄色网址在线免费播放| 国产黄色免费电影| 欧美亚洲天堂| 伊人伊人av电影| 国产一级黄色电影| 伊人久久青青草| 激情五月色综合亚洲小说| 国产视频xxxx| 成人欧美亚洲| 2021av在线| 在线一区观看| wwwww亚洲| 国产高清视频在线观看| 最新中文字幕在线视频| 国产亚洲精品久久久久久移动网络| 成人精品福利| 国产乱视频在线观看| 在线免费黄色毛片| 2019天天操夜夜操| 在线激情网站| 精品999视频| 在线播放av网站| a视频免费看| 中文字幕av在线播放| 中文在线官网天堂| 国产黄在线播放| 国产精品被窝福利一区| 青青草视频免费在线观看| av免费在线观看网站| 国产午夜在线| 在线一二三区|