Azure 数据工厂复制数据 Activity SQL Sink 存储过程和 ARM 模板中的 table 类型参数

Azure Data Factory Copy Data Activity SQL Sink stored procedure and table-typed parameter in ARM template

我正在部署包含复制数据 activity 的 Azure 数据工厂管道,其中接收器是 SQL 服务器存储过程。我提供存储过程名称,它映射到数据工厂的 ARM 模板中的 sqlWriterStoredProcedureName。最近在复制数据 activity 中设置接收器的界面更改为包含 Table 类型参数名称,它应该映射到 TableType (sqlWriterTableType) .

我应该使用什么 属性 来设置 Table 类型参数名称?我猜它会像 sqlWriterTableTypeParameter 或 sqlWriterTableTypeParameterName.

谁能指出我正确的方向?

是否与数据集类型相同? SQLServer 表。如此处所示:https://docs.microsoft.com/en-us/azure/data-factory/connector-sql-server#dataset-properties

在文档中向下滚动一点出现了这个:https://docs.microsoft.com/en-us/azure/data-factory/connector-sql-server#invoke-a-stored-procedure-from-a-sql-sink 所以我也会尝试使用 sqlWriterTableType。

希望对您有所帮助!!

我通过将该列留空并查看 ADF 给出的错误来解决这个问题。

如果您有这样的存储过程:

              CREATE PROCEDURE [dbo].[spFoo]
                    @FooType [dbo].[FooType] READONLY
                AS ...

那么你的变量是:

Table Type: "FooType"
Table type parameter name: "FooType" (without the @ symbol)

A​​DF 使用 @ 符号作为保留字,因此只需将其从您的输入变量中删除,它就会按预期工作。

MSFT 支持终于回复了我。在定义数据工厂的ARM模板中要设置的属性是"storedProcedureTableTypeParameterName"

使用 kirikintha 的 foo 示例:

CREATE PROCEDURE [dbo].[spFoo]
   @FooTypeVariable [dbo].[FooType] READONLY
AS
...

当调用 SQL 存储过程作为数据工厂副本 activity 接收器时,ARM 模板将如下所示:

...

    "sink": {
     "type": "AzureSqlSink",
     "sqlWriterStoredProcedureName": "[[dbo].[spFoo]",
     "sqlWriterTableType": "[[dbo].[FooType]",
     "storedProcedureTableTypeParameterName": "FooTypeVariable"
     }

...