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

时间:2019-07-29 14:42:49

标签: azure-data-factory azure-data-factory-2

我正在部署一个包含复制数据活动的Azure数据工厂管道,其中接收器是SQL Server存储过程。我提供了存储过程名称,该名称映射到数据工厂的ARM模板中的sqlWriterStoredProcedureName。最近,用于在“复制数据”活动中设置接收器的界面已更改为包括“表类型参数名”,该表名应映射到TableType(sqlWriterTableType)。

enter image description here

应该使用什么属性来设置表类型参数名称?我猜可能是sqlWriterTableTypeParameter或sqlWriterTableTypeParameterName。

有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:0)

您是否尝试过与数据集类型相同? SqlServerTable。如此处所示: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。

希望这对您有帮助!

答案 1 :(得分:0)

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

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

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

那么您的变量是:

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

ADF使用@符号作为保留字,因此只需将其从输入变量中删除即可,它会按预期工作。

答案 2 :(得分:0)

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

使用kirikintha的foo示例:

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

当调用SQL存储过程作为数据工厂复制活动接收器时,ARM模板如下所示:

...

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

...