共用方式為


連接至自訂工作中的資料來源

透過使用連接管理員,工作會連接至外部資料來源以擷取或儲存資料。在設計階段,連接管理員代表邏輯連接,並描述伺服器名稱與任何驗證屬性等主要資訊。在執行階段,工作會呼叫連接管理員的 AcquireConnection 方法,以建立連至資料來源的實體連接。

因為封裝可以包含許多工作,每個工作都可能有連至不同資料來源的連接,所以封裝會追蹤在 Connections 集合中的所有連接管理員。工作會使用其封裝中的集合,以尋找它們在驗證和執行期間將使用的連接管理員。Connections 集合是 ValidateExecute 方法的第一個參數。

您可以使用圖形化使用者介面中的對話方塊或是下拉式清單,對使用者顯示集合的 ConnectionManager 物件,以防止工作使用錯誤的連接管理員。這個方法可讓使用者只能從封裝內適當類型的 ConnectionManager 物件中進行選取。

工作會呼叫 AcquireConnection 方法以建立連至資料來源的實體連接。方法會傳回基礎連接物件,以供工作使用。因為連接管理員會將基礎連接物件的實作詳細資料與工作隔離開來,所以工作只需要呼叫 AcquireConnection 方法建立連接,而不必顧慮連接的其他層面。

範例

下列範例程式碼示範 Validate 與 Execute 方法中的 ConnectionManager 名稱之驗證,並顯示如何使用 AcquireConnection 方法來建立 Execute 方法中的實體連接。

    private string connectionManagerName = "";

    public string ConnectionManagerName
    {
      get { return this.connectionManagerName; }
      set { this.connectionManagerName = value; }
    }

    public override DTSExecResult Validate(
      Connections connections, VariableDispenser variableDispenser,
      IDTSComponentEvents componentEvents, IDTSLogging log)
    {
      // If the connection manager exists, validation is successful;
      // otherwise, fail validation.
      try
      {
        ConnectionManager cm = connections[this.connectionManagerName];
        return DTSExecResult.Success;
      }
      catch (System.Exception e)
      {
        componentEvents.FireError(0, "SampleTask", "Invalid connection manager.", "", 0);
        return DTSExecResult.Failure;
      }
    }

    public override DTSExecResult Execute(Connections connections, 
      VariableDispenser variableDispenser, IDTSComponentEvents componentEvents, 
      IDTSLogging log, object transaction)
    {
      try
      {
        ConnectionManager cm = connections[this.connectionManagerName];
        object connection = cm.AcquireConnection(transaction);
        return DTSExecResult.Success;
      }
      catch (System.Exception exception)
      {
        componentEvents.FireError(0, "SampleTask", exception.Message, "", 0);
        return DTSExecResult.Failure;
      }
    }
  Private _connectionManagerName As String = ""

  Public Property ConnectionManagerName() As String
    Get
      Return Me._connectionManagerName
    End Get
    Set(ByVal Value As String)
      Me._connectionManagerName = value
    End Set
  End Property

  Public Overrides Function Validate( _
    ByVal connections As Microsoft.SqlServer.Dts.Runtime.Connections, _
    ByVal variableDispenser As Microsoft.SqlServer.Dts.Runtime.VariableDispenser, _
    ByVal componentEvents As Microsoft.SqlServer.Dts.Runtime.IDTSComponentEvents, _
    ByVal log As Microsoft.SqlServer.Dts.Runtime.IDTSLogging) _
    As Microsoft.SqlServer.Dts.Runtime.DTSExecResult

    ' If the connection manager exists, validation is successful;
    ' otherwise fail validation.
    Try
      Dim cm As ConnectionManager = connections(Me._connectionManagerName)
      Return DTSExecResult.Success
    Catch e As System.Exception
      componentEvents.FireError(0, "SampleTask", "Invalid connection manager.", "", 0)
      Return DTSExecResult.Failure
    End Try

  End Function

  Public Overrides Function Execute( _
    ByVal connections As Microsoft.SqlServer.Dts.Runtime.Connections, _
    ByVal variableDispenser As Microsoft.SqlServer.Dts.Runtime.VariableDispenser, _
    ByVal componentEvents As Microsoft.SqlServer.Dts.Runtime.IDTSComponentEvents, _
    ByVal log As Microsoft.SqlServer.Dts.Runtime.IDTSLogging, ByVal transaction As Object) _
    As Microsoft.SqlServer.Dts.Runtime.DTSExecResult

    Try
      Dim cm As ConnectionManager = connections(Me._connectionManagerName)
      Dim connection As Object = cm.AcquireConnection(transaction)
      Return DTSExecResult.Success
    Catch exception As System.Exception
      componentEvents.FireError(0, "SampleTask", exception.Message, "", 0)
      Return DTSExecResult.Failure
    End Try

  End Function
Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 或 TechNet 上的 Integration Services 頁面:

若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。