2017-06-08 53 views
0

我的目標是通過存儲過程通過從一個SQL Azure的數據庫(用戶DB)到另一個SQL Azure數據庫(數據倉庫)數據。天青數據工廠數據集從StoredProcedure的

我已經創建了兩個鏈接服務,每一個DB。我懷疑這兩個數據集。

在考慮中的存儲過程從表中收集的數據和多個與其它表中的連接,並返回應當被存儲在一個表中的數據倉庫

的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

鑑於Azure的SQL數據庫的,我建議你需要在這裏使用的副本活動,以及存儲過程的限制。你需要在ADF想要工作的範圍內處理這個問題。記住,這是不是SSIS :-)

如果我是建設數據工廠這些都是我會採取的步驟......

  1. 爲了完整定義每個由存儲使用的表的數據集程序。
  2. 第一條管道。在第一個Azure SQL數據庫實例上有一個活動,它調用執行輸入數據集連接並輸出到新登臺表的存儲過程(在此處執行SQL INSERT INTO ... SELECT ...)。
  3. 將ADF中的輸出數據集定義爲臨時表(proc結果)。
  4. 第二條管道。作爲輸入,從點3的輸出登臺表複製活動。然後輸出到第二個Azure SQL數據庫實例上的表。
  5. 同樣爲了完整性,最終目的地表的ADF數據集。

副本活動的橋樑,其中跨數據庫查詢是不可能和SQL Server鏈接服務器不存在的差距。

圖片,以幫助...

(請原諒差的油漆技能)

enter image description here

有意義嗎? :-) 好,破解。

+0

謝謝!我遵循你的建議,並得到它的工作 – Jsanchez

+0

偉大,高興地幫助 –

+0

存儲過程的任何例子或鏈接? – Arron