【发布时间】:2020-09-25 20:03:15
【问题描述】:
我在 SQL 中有以下表值类型,它在 Azure 数据工厂中用于通过存储过程从大容量复制活动中的平面文件导入数据。文件 1 包含所有三列,因此可以正常工作。文件 2 只有 Column1 和 Column2,但 NOT Column3。我想既然该列被定义为 NULL 就可以了,但是 ADF 抱怨它试图在表类型期望 3 时传入 2 列。有没有办法为这两个文件重用这种类型并使 Column3 成为可选?
CREATE TYPE [dbo].[TestType] AS TABLE(
Column1 varchar(50) NULL,
Column2 varchar(50) NULL,
Column3 varchar(50) NULL
)
对目标 LandSource 的操作失败: ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=A 数据库操作失败并出现以下错误:'尝试通过 具有 2 列的表值参数,其中对应的 用户定义的表类型需要 3 列
如果无论在活动中是否使用具有表类型的存储过程或本机 BCP,复制活动的行为都是一致的,那就太好了。当不使用表类型并使用默认的批量插入时,源文件中丢失的列最终在目标表中为 NULL 而不会出错(假设该列为 NULLABLE)。
【问题讨论】:
-
我无法控制 ADF 如何使用表值类型调用存储过程。即使该列是 NULLABLE,我还是使用您的引用为该类型创建了一个 NULL 的默认值,但它仍然抱怨我只传递了 2 个值,但该类型需要 3 个。
标签: sql-server azure-data-factory table-valued-parameters