我正在尝试将本地SQL服务器上的数据加载到VM上的Sql Server。我每天都要做。同样,我创建了一个触发器。触发器正在正确插入数据。但是现在,我需要为目标列中的每次运行在目标列中插入triggerID。
我不知道我在做什么错误。我发现很多博客都在同一博客上,但是当我们从blob而非sql server中提取数据时,所有博客都具有信息。
我试图像这样插入相同的值,但是它给出了错误。 “活动复制数据1失败:请仅选择三个属性“名称”,“路径”和“普通”之一,以引用“映射”属性下“源”和“接收器”的列。“ 管道详细信息。请建议
{
"name": "pipeline1",
"properties": {
"activities": [
{
"name": "Copy Data1",
"type": "Copy",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "AzureSqlSource"
},
"sink": {
"type": "SqlServerSink"
},
"enableStaging": false,
"translator": {
"type": "TabularTranslator",
"mappings": [
{
"source": {
"name": "Name",
"type": "String"
},
"sink": {
"name": "Name",
"type": "String"
}
},
{
"source": {
"type": "String",
"name": "@pipeline().parameters.triggerIDVal"
},
"sink": {
"name": "TriggerID",
"type": "String"
}
}
]
}
},
"inputs": [
{
"referenceName": "AzureSqlTable1",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "SqlServerSQLDEV02",
"type": "DatasetReference"
}
]
}
],
"parameters": {
"triggerIDVal": {
"type": "string"
}
},
"annotations": []
}
}
我希望每次执行触发器时,都应将TriggerID填充到目标列TriggerID中。
答案 0 :(得分:0)
首先,请参见copy activity column mapping中的限制:
所以,我不认为您可以进行数据传输以及触发器,但触发器ID不在源列中。我的想法是:
1。首先使用Set Variable活动获取触发器ID值。
2。然后连接复制活动并将值作为参数传递。
3。在复制活动的接收器中,可以在将行插入表之前调用存储过程以将触发器ID与其他列组合。更多详细信息,请参见此document。