我在我的系统上配置了一个链接服务器对象“DIS”,用于访问远程数据库。我通过使用代码段[DIS]。[DISTemp]。[dbo]。[Agency]。
来访问它。我的本地数据库上有一个表tbBroker。现在我必须将数据从本地机器的tbBroker传输到DIS的表代理。两个表中的列映射如下
CustomAdapter
现在我必须根据条件将数据从本地机器传输到DIS。
检查DIS的[Agency]表中是否存在代理商。使用来自tbBroker的BrokerCode(来自本地机器)进行验证。
如果存在
更新DIS的代理商表中的记录。
如果不存在
在DIS的Agency表中插入记录。
请帮帮我!!!
答案 0 :(得分:1)
鉴于我从您的问题中理解,我认为您最好使用MERGE
声明。
由于无法将MERGE
的目标设置为远程表,因此需要在远程数据库上执行以下操作,并链接回源。
USE [DISTemp];
MERGE INTO
[dbo].[Agency] AS [TARGET]
USING
[<<sourceDB>>].[dbo].[tbBroker] AS [SOURCE]
ON
[TARGET].[AgencyNumber] = [SOURCE].[BrokerCode]
WHEN NOT MATCHED BY TARGET THEN
INSERT (
[AgencyNumber]
, [AgencyName]
, [WebsiteUrl]
, [City]
, [EmailAddress]
)
VALUES (
[SOURCE].[BrokerCode]
, [SOURCE].[BusinesssName]
, [SOURCE].[WebsiteUrl]
, [SOURCE].[City]
, [SOURCE].[Email]
)
WHEN MATCHED THEN
UPDATE SET
[TARGET] = [AgencyNumber] = [SOURCE].[BrokerCode]
, [TARGET] = [AgencyName] = [SOURCE].[BusinesssName]
, [TARGET] = [WebsiteUrl] = [SOURCE].[WebsiteUrl]
, [TARGET] = [City] = [SOURCE].[City]
, [TARGET] = [EmailAddress] = [SOURCE].[Email];