簡體   English   中英

SSIS動態連接字符串

[英]SSIS dynamic connection string

我正在嘗試為我的所有軟件包建立與DB的動態連接。 我正在嘗試通過使用腳本組件加載用戶定義的變量來實現這一目標。

我知道我也可以使用環境變量來執行此操作,問題是我的軟件包不是全部都將被調度,並且其中一些軟件包是通過Web服務或過程運行的,因此我不能使用調度的作業來執行此操作,並且使用@reference_id維護起來有點復雜。

我不知道如何循環變量。 我試過了

foreach(變量中的變量var)

但這不是那樣..
所以我在這里有兩個問題:

  • 如何循環傳遞的所有變量?
  • 如何獲得變量名? (我在Variables.VarName上看不到名稱屬性。)

EG OLE DB源將返回兩行:

conName | conString
 con1   |  someConnection
 con2   |  someConnection

我的項目中有兩個用戶定義的變量-> con1和con2。 因此,遍歷我的變量-> foreach(variable),如果var.name = row.conName,則加載row.conString value。

終於,我設法做到了。 對於那些想要這樣做的人,這是我所做的:

public class ScriptMain : UserComponent
{

    Dictionary<string, string> AllCons = new Dictionary<string, string>();

    public override void PostExecute()
    {
        base.PostExecute();
        string connectionString;

        foreach (IDTSVariable100 obj in ReadWriteVariables)
        {
            if (AllCons.TryGetValue(obj.QualifiedName, out connectionString))
            {
                obj.Value = connectionString;
            }
        }
    }

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        AllCons.Add("User::" + Row.ConName, Row.ConString);
    }
}

我使用了Dictionary對象在Input0_ProcessInputRow部分上存儲連接名稱和連接字符串。 然后,在PostExecute中,我使用IDTSVariable100對象遍歷了所有用戶定義的變量。 然后檢查連接名稱是否等於變量,然后將連接字符串放入其中。

希望它可以幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM