2012-08-15 36 views
3

我有一個OLEDB連接,我希望在腳本中動態更改此連接。我使用下面的代碼獲得這個OLEDB連接的信息:如何使用腳本任務更改OLEDB連接信息?

ConnectionManager cm = Dts.Connections["VendorDB"]; 
     DbConnection conn = null; 
     if (cm.CreationName == "OLEDB") 
     { 
      Wrap.IDTSConnectionManagerDatabaseParameters100 cmParams = 
      cm.InnerObject as Wrap.IDTSConnectionManagerDatabaseParameters100; 
      conn = cmParams.GetConnectionForSchema() as DbConnection; 
     } 
     else 
     { 
      conn = cm.AcquireConnection(null) as DbConnection; 
     } 

     if (conn.State == ConnectionState.Closed) 
     { 
      conn.Open(); 
     } 
     MessageBox.Show(conn.ConnectionString.ToString()); 

我需要改變這方面的信息(如我想改變初始目錄等),並希望這一改變的信息在整個包保留。如何做?

+3

你能解釋一下你試圖用這個做什麼嗎?如果目標僅僅是在運行時更改連接字符串的值,則表達式可能是最簡單的。 – billinkc 2012-08-15 13:34:41

+0

爲了更具描述性,我必須針對不同地區進行不同的設置,因此我需要針對每個地區進行不同的配置設置。根據我的理解,config文件是在開始時加載的,我在這裏要做的是動態地更改連接字符串。 – 2012-08-15 14:54:41

+0

這是基於數據流中的值(第1行到第a行,第2行到第B行)還是您需要更改集合中所有成員的連接的foreach場景? – billinkc 2012-08-15 16:35:07

回答

1

我會用的東西

  • 首先,我會定義一個SSIS變量組合指示here
  • 的我會使連接字符串表達式所示解決此問題here
  • 而如圖所示通過腳本更改變量here

第一步比較容易:

打開變量選項卡(右鍵單擊控制流裏面,然後點擊變量),並添加你想要的變量(也許字符串連接字符串)

請使用新定義的變量的表達式。 使用第三個鏈接中的代碼在運行時更改值。

Dts.Variables("myVariable").Value = @"C:\Test2.txt"; 

Dts.TaskResult = ScriptResults.Success