2017-06-15 347 views
0

(我不是賦予足夠的成員包括在我的帖子截屏 - 這裏是一個共享的OneDrive文件夾中的鏈接,有圖像的文章,以更好地解釋https://1drv.ms/f/s!Ai9bJ2dV87SLg9h5FP84If74hyUK4QSSIS記錄詳細的整個結果集,

我想記錄什麼特定的存儲特效插入,更新和刪除後,他們通過執行SQL任務在SSIS包工作流程內執行。有第三方實現的自定義日誌記錄方法,但它通過將系統ParentContainer ID與用戶任務ID相關聯,該用戶任務ID充當記錄此類信息的存儲過程的參數。 1)我不認爲這將從一個執行SQL任務和2)我想要的細節水平超過DML函數的發生。

我已經成功地記錄了「單行」通過建立一個結果集,使用變量,並通過使用派生列任務檢索變量並插入到一個日誌表相鄰的數據流任務。

由於我目前的工作方法的一個例子:

在EXEC SQL任務設置

詳細信息,它記錄

現在我整個執行多個插入存儲過程來的數據流部分,因此我需要記錄更多細節 - 不止一行。我在proc中創建了變量來檢索這個多重INSERT場景,並且在SP中選擇了一個聯合會產生以下結果集。

我明白,我現在需要用整個結果集,現在設定值,而這個應用程序是使用什麼方法來堅持的結果設置爲另一步(對我來說,爲了一個目標登錄)。在研究中,我瞭解瞭如何使用Foreach循環容器,但是這似乎可以配置爲一個需要成爲值類型對象的變量。我目前有4個變量,無法在Foreach對象的Collection部分設置。

我希望在完全實現這一目標或建議另一種方法任何見解。

非常感謝提前!

+0

我覺得這個問題含糊不清,因此不清楚。當你這樣做的時候:「但是我對從那裏採取什麼方法以及如何記錄這個問題感到困惑」,它不再清楚你到底在說什麼。你可以編輯你的問題到基本要點,並專注於問題是什麼,沒有不必要的背景噪音? –

+0

請告知修訂是否令人滿意 – SuraAnahita

+0

不,我還不知道你想問什麼,對不起。 –

回答

0

您必須設置探查器跟蹤來跟蹤正在執行的procs。您應該通過數據庫和用戶在跟蹤上設置過濾器,並使用SQLProfilerTSQL_SPs模板。

+0

我知道正在執行什麼procs,它是通過proc中的變量(例如DECLARE @rows_insert INT等)捕獲結果集中的(> 1行)輸出的。 – SuraAnahita

1

你INSERT_B_BUDGET SQL任務中生成超過1行,你想用foreach循環趕上整個結果集,是否正確?

  1. 創建一個變量LoopObject,數據類型爲Object。

  2. 編輯INSERT_B_BUDGET任務,

    在常規選項卡

    ,改變結果集,以完整的結果在結果集選項卡中,變量名LoopObject設置

  3. 添加Foreach循環容器INSERT_B_BUDGET任務後,將你的日誌1任務到容器中。

    在集合選項卡,枚舉

    ,選擇FOREACH ADO枚舉,ADO對象源變量作爲LoopObject,枚舉模式,在所述第一表中選擇行。

    在變量映射中,添加您現有的4個變量。

+0

這非常有效。它完成了我以前在概念上的理解;我不明白循環對象var是在Exec SQLTask中映射的唯一變量,以及映射到Foreach容器中的其他字段變量。你的指示非常清楚,謝謝。作爲應用程序的好奇心,這種方法在記錄proc的洞察力中有意義嗎?您是否對同一應用程序或其他應用程序使用過這種方法? – SuraAnahita

+0

如果您的SQL任務和日誌表位於同一個SQL Server上,則可以直接使用插入,無需SSIS。如果他們不在同一個實例,SSIS將工作。如果能解決您的問題,請將我的答案掩蓋爲答案。謝謝。 – Wendy

+0

明白了,再次感謝你。我做了,但得到以下消息,我相信因爲我還沒有歸還。 「感謝您的反饋!記錄下名聲不到15的人的投票,但不要更改公開顯示的帖子得分」 – SuraAnahita