人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

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

發(fā)布日期:2021-12-20 22:08 | 文章來源:CSDN

最近有個(gè)需求是要跨庫進(jìn)行數(shù)據(jù)同步,兩個(gè)數(shù)據(jù)庫分布在兩臺(tái)物理計(jì)算機(jī)上,自動(dòng)定期同步可以通過SQL Server代理作業(yè)來實(shí)現(xiàn),但是前提是需要編寫一個(gè)存儲(chǔ)過程來實(shí)現(xiàn)同步邏輯處理。這里的存儲(chǔ)過程用的不是opendatasource,而是用的鏈接服務(wù)器來實(shí)現(xiàn)的。存儲(chǔ)過程創(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)銷平臺(tái)](
  @destserver nvarchar(50),
  @sourceserver nvarchar(50)
)
AS
BEGIN
  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,
                
                客戶名稱,
                客戶簡稱,
                輸入碼,
                查詢碼,
                地址,
                錄入登錄名,
                錄入時(shí)間,
                修改登錄名,
                修改時(shí)間,
                審批狀態(tài)ID,
                審批狀態(tài)名稱,
                是否審批結(jié)束,
                審批操作時(shí)間,
                項(xiàng)目管理客商編碼,
                序號(hào))
        SELECT A.客戶ID,A.客戶名稱,
                A.客戶簡稱,
                dbo.fn_pm_GetPy(A.客戶名稱),
                A.客戶編號(hào)+','+A.客戶名稱+','+dbo.fn_pm_GetPy(A.客戶名稱)+','+A.客戶簡稱+','+dbo.fn_pm_GetPy(A.客戶簡稱),
                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.客戶名稱=B.客戶名稱,
              A.客戶簡稱=B.客戶簡稱,
              A.輸入碼=dbo.fn_pm_GetPy(B.客戶名稱),
              A.查詢碼=B.客戶編號(hào)+','+B.客戶名稱+','+dbo.fn_pm_GetPy(B.客戶名稱)+','+B.客戶簡稱+','+dbo.fn_pm_GetPy(B.客戶簡稱),
              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 catch
END

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

可以參照如下的配置:

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

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部