国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server 跨庫(kù)同步數(shù)據(jù)

2020-07-25 12:47:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近有個(gè)需求是要跨庫(kù)進(jìn)行數(shù)據(jù)同步,兩個(gè)數(shù)據(jù)庫(kù)分布在兩臺(tái)物理計(jì)算機(jī)上,自動(dòng)定期同步可以通過(guò)SQL Server代理作業(yè)來(lái)實(shí)現(xiàn),但是前提是需要編寫(xiě)一個(gè)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)同步邏輯處理。這里的存儲(chǔ)過(guò)程用的不是opendatasource,而是用的鏈接服務(wù)器來(lái)實(shí)現(xiàn)的。存儲(chǔ)過(guò)程創(chuàng)建在IP1:192.168.0.3服務(wù)器上,需要將視圖v_custom的客戶信息同步到IP2:192.168.0.10服務(wù)器上的t_custom表中。邏輯是如果不存在則插入,存在則更新字段。

create PROCEDURE [dbo].[p_pm_項(xiàng)目平臺(tái)客戶批量同步到報(bào)銷(xiāo)平臺(tái)](  @destserver nvarchar(50),  @sourceserver nvarchar(50))ASBEGIN  SET NOCOUNT ON;  --不存在則添加鏈接服務(wù)器,外部查詢必須指明IP地址,例如 select * from [IP].[database].[dbo].[table]  if not exists (select * from sys.servers where server_id!=0 and data_source=@destserver)  begin    exec sp_addlinkedserver  @server=@destserver  end  if not exists (select * from sys.servers where server_id!=0 and data_source=@sourceserver)  begin    exec sp_addlinkedserver  @server=@sourceserver  end    begin try     set xact_abort on    begin transaction               INSERT INTO [192.168.0.10].[dbCRM].[dbo].[t_custom] (客戶ID,                                客戶名稱(chēng),                客戶簡(jiǎn)稱(chēng),                輸入碼,                查詢碼,                地址,                錄入登錄名,                錄入時(shí)間,                修改登錄名,                修改時(shí)間,                審批狀態(tài)ID,                審批狀態(tài)名稱(chēng),                是否審批結(jié)束,                審批操作時(shí)間,                項(xiàng)目管理客商編碼,                序號(hào))        SELECT A.客戶ID,A.客戶名稱(chēng),                A.客戶簡(jiǎn)稱(chēng),                dbo.fn_pm_GetPy(A.客戶名稱(chēng)),                A.客戶編號(hào)+','+A.客戶名稱(chēng)+','+dbo.fn_pm_GetPy(A.客戶名稱(chēng))+','+A.客戶簡(jiǎn)稱(chēng)+','+dbo.fn_pm_GetPy(A.客戶簡(jiǎn)稱(chēng)),                A.地址,                'admin',                getdate(),                null,                null,                'D65F87A8-79C8-4D1C-812D-AE4591E056A8',                '已審批',                1,                A.審批操作時(shí)間,                A.項(xiàng)目管理客商編碼,                0        FROM  [dbPM].[dbo].[v_custom] A        WHERE A.客戶ID NOT IN ( SELECT 客戶ID FROM  [192.168.0.10].[dbCRM].[dbo].[t_custom]);                                                                                  ----------------------------------存在更新-----------------------------------                                        update  A set               A.客戶名稱(chēng)=B.客戶名稱(chēng),              A.客戶簡(jiǎn)稱(chēng)=B.客戶簡(jiǎn)稱(chēng),              A.輸入碼=dbo.fn_pm_GetPy(B.客戶名稱(chēng)),              A.查詢碼=B.客戶編號(hào)+','+B.客戶名稱(chēng)+','+dbo.fn_pm_GetPy(B.客戶名稱(chēng))+','+B.客戶簡(jiǎn)稱(chēng)+','+dbo.fn_pm_GetPy(B.客戶簡(jiǎn)稱(chēng)),              A.地址=B.地址,              A.修改登錄名='admin',              A.修改時(shí)間=getdate(),              A.項(xiàng)目管理客商編碼 =B.項(xiàng)目管理客商編碼          from [192.168.0.10].[dbCRM].[dbo].[t_custom] A,[dbPM].[dbo].[v_custom] B           where A.客戶ID=B.客戶ID;                        commit transaction     end try     begin catch       select ERROR_NUMBER() as errornumber,ERROR_MESSAGE() as errormsg,ERROR_LINE() as errorline      rollback transaction     end catchEND

  如果沒(méi)有正確配置,經(jīng)常會(huì)出現(xiàn) 消息 7391,級(jí)別 16,狀態(tài) 2,過(guò)程 xxxxx,第 XX 行 。無(wú)法執(zhí)行該操作,因?yàn)殒溄臃?wù)器 "xxxxx" 的 OLE DB 訪問(wèn)接口 "SQLNCLI" 無(wú)法啟動(dòng)分布式事務(wù)。

  可以參照如下的配置:

以上就是SQL Server 跨庫(kù)同步數(shù)據(jù)的實(shí)現(xiàn)方法,希望對(duì)大家的學(xué)習(xí)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳泉市| 邯郸县| 尼勒克县| 涿州市| 白山市| 隆昌县| 当涂县| 左贡县| 镇宁| 闽侯县| 壤塘县| 抚松县| 乌兰察布市| 保定市| 安国市| 石泉县| 神木县| 华坪县| 安仁县| 来凤县| 茶陵县| 肇东市| 博湖县| 丹巴县| 阿克| 宜阳县| 攀枝花市| 政和县| 临沧市| 白银市| 苍山县| 阿图什市| 松阳县| 新安县| 永新县| 南漳县| 兴和县| 尼木县| 土默特左旗| 枣强县| 福鼎市|