2013-04-22 117 views
2

我想知道什麼是實施執行SQL任務日誌記錄的最佳方法。例如,對於我的每個執行SQL任務組件,我想記錄以下內容:SSIS自定義日誌記錄最佳實踐

1)SQL Task的描述。 2)在SQL Task中使用的SQL語句。 3)SQL語句的結果。該SQL語句正在返回一個標量值。 4)作業運行ID是SSIS創建的是SSIS創建的Operation_Id。

目前,這是我如何實施它,這是相當重複的。 1)對於每個執行SQL任務(讓我們稱之爲mySQLTask),我在mySQLTask的後執行事件中創建一個名爲「日誌結果」的另一個執行SQL任務。 2)我創建了一個名爲Log_Result的存儲過程,它是從「日誌結果」執行SQL任務中執行的。 3)然後,我從mySQLTask複製SQL語句,並將其作爲硬編碼參數粘貼到存儲過程參數中。例如,在SQL Statement屬性的「Log Result」SQL任務...「EXEC Log_Result?,?,'SELECT COUNT(*)FROM TABLE',?

有沒有一種方法可以檢索SQL語句從mySQLTask動態?有沒有更好的方法來做到這一點?

我也探討了在日誌記錄功能的內置日誌ExecuteSQLExecutingQuery選項的SSIS。它給了我執行的SQL語句,但我也想跟蹤結果太。

感謝。

回答

0

我強烈建議更換這本書和登錄電子框架原理掃所載:

的Microsoft SQL Server 2008集成服務:問題,設計解決方案

ISBN: 978-0-470-52576-0

如果我理解正確你的問題我會說這確實你在尋找什麼。 Code download link here.

如果我已經正確理解你的問題,我會說如果你使用SQL Server配置類型從包配置中配置你的執行SQL任務SQLStatement屬性,它可以用來做你所描述的。

這將允許您將SQL語句保存在SQL Server中的表中,您可以查詢並加入到包含每個包任務的日誌的其他表中。

這是非常直接的設置和相當強勁。作者做出了一步一步走過你的完美工作。應該花一天時間來啓動並運行。

記錄執行SQL任務的標量結果將是對SSIS PDS框架的增強。但我不會太擔心:應該很好地適應PackageTaskLog表格的外觀。我提供下面的PackageTaskLog腳本供您參考。

CREATE TABLE [adm].[PackageTaskLog](
    [PackageTaskLogID] [int] IDENTITY(1,1) NOT NULL, 
    [PackageLogID] [int] NOT NULL, 
    [SourceName] [varchar](255) NOT NULL, 
    [SourceID] [uniqueidentifier] NOT NULL, 
    [StartDateTime] [datetime] NOT NULL, 
    [EndDateTime] [datetime] NULL, 
CONSTRAINT [PK_PackageTaskLog] PRIMARY KEY CLUSTERED 
(
    [PackageTaskLogID] ASC 
)