【发布时间】:2017-12-20 10:07:15
【问题描述】:
我正在尝试从 Azure DataFactory V2 执行 Azure SQL 数据库中的存储过程。该过程将使用平面表中的数据对不同的表进行一些更新插入。根据MS specifications,您需要有一个表值参数来制作这样的东西,但这会将管道活动与过程和所有模型耦合起来。有什么方法可以定义数据集和复制活动,使其只执行存储过程?
以下 json 来自 arm 模板:
DataSet:
{"type": "datasets",
"name": "AzureSQLProcedureDS",
"dependsOn": [
"[parameters('dataFactoryName')]",
"[parameters('destinationLinkedServiceName')]"
],
"apiVersion": "[variables('apiVersion')]",
"properties": {
"type": "AzureSqlTable",
"linkedServiceName": {
"referenceName": "[parameters('destinationLinkedServiceName')]",
"type": "LinkedServiceReference"
},
"typeProperties": {
"tableName": "storedProcedureExecutions"
}
}}
Activity:
{"name": "ExecuteHarmonizationProcedure",
"description": "Executes the procedure that Harmonizes the Data",
"type": "Copy",
"inputs": [
{
"referenceName": "[parameters('destinationDataSetName')]",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLProcedureDS",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSink"
},
"sink": {
"type": "SqlSink",
//"SqlWriterTableType": "storedProcedureExecutionsType",
"SqlWriterStoredProcedureName": "@Pipeline().parameters.procedureName",
"storedProcedureParameters": {
"param1": {
"value": "call from adf"
}
}
}
}
}
考虑到 MS 没有为此主题提供太多帮助,我们将不胜感激。
【问题讨论】:
-
您能描述一下您遇到困难的地方以及收到的错误信息吗?
-
目的是找到不需要创建虚拟表的东西,因为在这种情况下,这更容易发生 sql 注入。如果有办法只指定过程的名称和所需的参数,那就更好了。
标签: azure-sql-database azure-data-factory