SQLserver 定时跨服务器多表联合更新

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012571917/article/details/80336201

前言:实际业务中,需要实现定时的跨服务器的多表联合,然后更新一个表的值。

  1. 先在A服务器上建立链接服务器,如下
    这里写图片描述

此处一点要点击使用此安全上下文建立链接,否则到job运行那里可能会出现错误
然后右击测试链接,测试通过后,在建立存储过程

2.建立存储过程

USE [MSIS]
GO

/****** Object:  StoredProcedure [dbo].[UpdateMSISVisitNumber]    Script Date: 2018/5/16 13:55:30 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateMSISVisitNumber]
AS
    BEGIN
        --根据身份证号码更新 VisitNumber
        UPDATE  MSIS_Patient
        SET     MSIS_Patient.VisitNumber = D_Paient.PatientIdInDomain ,
                MSIS_Patient.VisitType = D_Paient.DomainId ,
                MSIS_Patient.Remark = GETDATE()
        FROM    [192.168.26.80].EMPI.dbo.PatientInfo AS Patient
                INNER JOIN [192.168.26.80].EMPI.dbo.DomainPatients AS D_Paient ON D_Paient.SeqNo = Patient.SeqNo
                INNER JOIN MSIS.dbo.Patient AS MSIS_Patient ON Patient.IDNumber = MSIS_Patient.National_ID
        WHERE   D_Paient.IsBase = 1
                AND LEN(REPLACE(MSIS_Patient.National_ID, '', ' ')) >= 18
                AND MSIS_Patient.National_ID <> '000000000000000000  '
                AND MSIS_Patient.VisitNumber IS NULL;


 --根据EMPI更新 VisitNumber  
        UPDATE  MSIS_Patient
        SET     MSIS_Patient.VisitNumber = D_Paient.PatientIdInDomain ,
                MSIS_Patient.VisitType = D_Paient.DomainId ,
                MSIS_Patient.Remark = GETDATE()
        FROM    [192.168.26.80].EMPI.dbo.EmpiIds AS EmpiIds
                INNER JOIN [192.168.26.80].EMPI.dbo.DomainPatients AS D_Paient ON D_Paient.EmpiId = EmpiIds.EmpiId
                INNER JOIN MSIS.dbo.Patient AS MSIS_Patient ON MSIS_Patient.EMP_ID = EmpiIds.EmpiDisplayId
        WHERE   D_Paient.IsBase = 1
                AND LEN(REPLACE(MSIS_Patient.National_ID, '', ' ')) < 18
                AND MSIS_Patient.EMP_ID IS NOT NULL
                AND MSIS_Patient.VisitNumber IS NULL; 
    END; 
GO

3.最后建立JOB,定时作业就可以了。注意建立完JOB后,先点击JOB名字右击,点击“作业开始步骤”,先测试下JOB 是否有错误。

猜你喜欢

转载自blog.csdn.net/u012571917/article/details/80336201