我正在部署一个包含复制数据活动的Azure数据工厂管道,其中接收器是SQL Server存储过程。我提供了存储过程名称,该名称映射到数据工厂的ARM模板中的sqlWriterStoredProcedureName。最近,用于在“复制数据”活动中设置接收器的界面已更改为包括“表类型参数名”,该表名应映射到TableType(sqlWriterTableType)。
应该使用什么属性来设置表类型参数名称?我猜可能是sqlWriterTableTypeParameter或sqlWriterTableTypeParameterName。
有人能指出我正确的方向吗?
答案 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"
}
...