我的目标是通过存储过程将数据从一个SQl azure数据库(用户数据库)传递到另一个SQl azure数据库(Datawarehouse)。
我创建了两个链接的服务,每个数据库一个。我怀疑的两个DataSet。
有问题的存储过程从表中收集数据,并与其他表进行多次连接,并返回应存储在Datawarehouse中的表中的结果
SP就像这样:
ALTER PROCEDURE [DataWarehouse].[Item_init]
AS
BEGIN
SET NOCOUNT ON
SELECT Id, a.Name, Code, f.Name, s.Name, g.Name
FROM Item.Item a
join Item.Groupg on g.idGroup= a.idGroup
join Item.Subfam s on s.idSubfam = g.idSubfam
join Item.Fam f on f.idFam= s.idFam
END
从UserDB收集数据的数据集(我认为它不正确)是这样的:
{
"name": "ds_SProcItem_init",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "UserTable",
"typeProperties": {
"tableName": "Item.Item"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
其他数据集:
{
"name": "ds_DWItemOutput",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "DataWareHouse",
"typeProperties": {
"tableName": "Item"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
传递数据集的管道如下:
{
"name": "SprocItem_InitPipeline",
"properties": {
"activities": [
{
"type": "SqlServerStoredProcedure",
"typeProperties": {
"storedProcedureName": "DataWarehouse.Item_init"
},
"inputs": [
{
"name": "ds_SProcItem_init"
}
],
"outputs": [
{
"name": "ds_DWItemOutput"
}
],
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"name": "SprocItem_Init"
}
],
"start": "2016-08-02T00:00:00Z",
"end": "2016-08-02T05:00:00Z",
"isPaused": false,
"hubName": "pruebasaas_hub",
"pipelineMode": "Scheduled"
}
}
请知道这个问题的人,你能帮助我吗? 谢谢!
答案 0 :(得分:0)
鉴于Azure SQL DB的限制,我建议您需要在此处使用复制活动以及存储过程。您需要在ADF想要工作的范围内处理此问题。记住这不是SSIS: - )
如果我正在构建数据工厂,那么这就是我要采取的步骤......
复制活动填补了无法进行跨数据库查询且SQL Server链接服务器不存在的空白。
图片帮助...
(请原谅可怜的油漆技巧)
有意义吗? :-) 好,破解。