SSIS是一種產品,如果你右擊它足夠它最終會做一些事情的。但嚴重的人,它讓我想起VB6有一個糟糕的一天...
這聽起來像一個簡單的事情要做,但它需要大量的右鍵單擊和在這裏和那裏小小的代碼。以下是具體步驟:
- 聲明在您的存儲過程(存儲過程)的一種或多種output parameters包含您的狀態信息
- 在SSIS中,modify your call以遏制SSIS問號「通配符」的存儲過程(或不管他們叫他們)
- 添加variable到SSIS
- Map SPROC output parameter(s)到SSIS變量
- 搭建logging provider在SSIS
- 啓用一個event觸發將您的狀態消息寫入日誌
- 創建另一個任務是SSIS將數據實際寫入日誌。我推薦使用SQL,但由你決定
如果你閱讀上面的鏈接,你會明白。請閱讀一些細節和編輯意見。
通過聲明一個或多個輸出參數並將它們與狀態消息一起設置,您可以通過SPROC啓動該地點。
SET @my_status = 'Insert Started'
也許你想要將所有的消息連接成一個輸出參數,或者有多個輸出參數。由你決定。
現在,右鍵單擊您的SSIS控制流畫布並添加一個變量。如果您有更多的SPROC輸出參數,沖洗並重復。
右鍵單擊您的SQL任務和編輯您的SQL調用看起來像這樣:
EXEC myStoredProcedure ? OUTPUT
如果您有輸入參數,那些需要被佔了這裏。這個?非常重要,因爲它代表了一個基於零的編號參數,您必須將其映射以便SSIS實際上對狀態消息執行任何操作。該設計讓人聯想到Wordstar郵件在個人計算的石器時代重新合併。
轉到參數映射。點擊添加並查找您的變量。這將是難看的東西
User::my_status
如果我們都認爲參數名稱是參數名稱,我們都會是錯的。在這個例子中,你會把0(零)放在這裏,因爲這顯然是你的SPROC中的zero-eth參數。
好的,現在您已經設置了一個可以記錄的變量。但是你還沒有完成。你必須設置另一個執行SQL任務來實際記錄這個。我不會引導你通過這位親愛的讀者,但希望Aalam Rangi的優秀文章仍然在那裏給你你需要做的一切。簡而言之,您必須a)設置SSIS日誌記錄提供程序,b)啓用將觸發將數據寫入日誌的事件,c)編寫SQL插入語句,並在其中添加更多問號以實際寫入數據到您要記錄到的標準SQL表。如果你想登錄到一個文件,這篇文章仍然會有所幫助。這裏是插入代碼,它完美適用於SSIS和Visual Studio 2015.謝謝Aalam!
INSERT INTO [dbo].[sysssislog]
([event]
,[computer]
,[operator]
,[ source]
,[sourceid]
,[executionid]
,[starttime]
,[endtime]
,[datacode]
,[databytes]
,[message])
VALUES
('*SSIS-OnVariableValueChanged' -- Custom event name
,? -- param 0
,? -- param 1
,? -- param 2
,? -- param 3
,? -- param 4
,? -- param 5
,? -- param 6
,0 -- Zero
,'' -- Blank string
,?) -- param 7
快點右鍵點擊!
這是正常的... –
請告訴我,我怎樣寫存儲過程的輸出到SSIS – StackUser