首页 > 解决方案 > 是否可以使用 MERGE 语句使用本地数据库更新 Azure 中的表?

问题描述

我在远程服务器中有一个表,我想根据本地服务器中已有的数据更新/删除它。我的想法是为此使用 MERGE。但是如果我使用任何远程服务器名称,SQL 会给我无效的对象名称错误。那么这可能吗?欢迎任何建议!

标签: sqlazure-sql-database

解决方案


  1. 您可以通过自托管集成运行时将数据集创建到本地数据库。 在此处输入图像描述

  2. 然后在 Azure SQL 中创建表、表类型参数和过程。


CREATE TABLE [dbo].[emp](
    [id] [int] NOT NULL,
    [name] [varchar](20) NULL,
    [age] [int] NULL
)

CREATE TYPE [dbo].[EmpType] AS TABLE(
    [id] [int] NOT NULL,
    [name] [nvarchar](max) NOT NULL,
    [age] [nvarchar](max) NOT NULL
)
GO

CREATE PROCEDURE [dbo].[uspEmp]

@emp [dbo].[EmpType] READONLY

AS
        MERGE [dbo].[emp] AS target_sqldb

        USING @emp AS source_tblstg

        ON target_sqldb.id = source_tblstg.id 

        WHEN MATCHED THEN

        UPDATE SET

        target_sqldb.name = source_tblstg.name,

        target_sqldb.age = source_tblstg.age
        
        WHEN NOT MATCHED BY TARGET THEN 

        INSERT VALUES (

            source_tblstg.id,

            source_tblstg.name,

            source_tblstg.age
        );

        --WHEN NOT MATCHED BY SOURCE THEN
        --DELETE;

  1. 在 sink 设置中选择存储过程和导入表 tpye 参数。 在此处输入图像描述

推荐阅读