2016-02-29 111 views
1

我有一個dtsx文件,它處理超過200個表導出和腳本,以便在完成每個表的導出之前和之後記錄信息。我正在嘗試更改日誌記錄以包含更多詳細信息。打開逐個日誌腳本對象是一個耗時的過程,請單擊編輯並進行更改。我使用正則表達式在記事本++中打開了dtsx文件,我通過添加更多日誌信息來更新腳本文本。但是當我運行SSIS時,我的更改不起作用。dtsx文件手動編輯不適用

當我在Visual Studio 2013中打開修改後的dtsx文件時,雙擊日誌腳本對象,單擊編輯,然後在所有日誌對象上添加空間保存,然後我的更改生效。

我比較了這兩個文件(其中一個從visual studio的其他記事本++修改而來),​​除了一些GUID區別和我的新空格字符沒有變化。爲什麼當我在記事本++中創建它們時,我的更改不起作用?我錯過了什麼嗎?

+0

要重申,您正在修改VS環境之外的腳本任務。你的觀察結果是,當包裹着火時,新代碼沒有得到尊重。然而,在VS中打開腳本任務並且做出「不變」會導致代碼正在工作,是嗎? – billinkc

+0

這是正確的 – Esen

回答

1

非常好!根本問題就像是如果你改變一個C#類文件,這些改變將不會反映在應用程序中,直到你編譯了這就是發生了什麼,您已經更改了SSIS包的源腳本,但是您需要將該腳本編譯爲字節碼,以便它可以真正運行。

2005年的SSIS版本允許我們指定代碼是否應該在運行時間與設計時間進行編譯,但是在2005年的生命週期中某些時候並不能很好地工作,代碼必須在設計時設置。

認爲我已經看到編譯腳本任務/組件的代碼,但無論是在SO還是其他地方,都是一個謎。我相信馬特梅森表示2005年至2008年和2012年之間的事情是如何變化的,但我找不到這篇文章。有this post這可能會給你一個正確的方向,你需要使用哪些類來獲得編譯包。