Język

Nawiązywanie połączenia ze źródłami danych w zadaniu niestandardowym

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Zadania łączą się z zewnętrznymi źródłami danych, aby pobierać lub zapisywać dane, korzystając z menedżera połączeń. W momencie projektowania menedżer połączeń reprezentuje logiczne połączenie i opisuje kluczowe informacje, takie jak nazwa serwera oraz wszelkie właściwości uwierzytelniania. W czasie działania zadania wywołują AcquireConnection metodę menedżera połączeń, aby nawiązać fizyczne połączenie ze źródłem danych.

Ponieważ pakiet może zawierać wiele zadań, z których każde może mieć połączenia z różnymi źródłami danych, pakiet śledzi wszystkie menedżery połączeń w kolekcji, czyli kolekcji Connections . Zadania wykorzystują kolekcję w swoim pakiecie, aby znaleźć menedżera połączeń, którego będą używać podczas walidacji i wykonywania. Kolekcja Connections jest pierwszym parametrem Validate dla metod i Execute .

Możesz zapobiec użyciu, który wykonał niewłaściwy menedżer połączeń, wyświetlając użytkownikowi obiekty ConnectionManager z kolekcji, korzystając z okna dialogowego lub listy rozwijanej w graficznym interfejsie użytkownika. Daje to użytkownikowi możliwość wyboru spośród ConnectionManager tylko tych obiektów odpowiedniego typu, które znajdują się w pakiecie.

Zadania wywołują AcquireConnection metodę, aby nawiązać fizyczne połączenie ze źródłem danych. Metoda zwraca obiekt połączenia, który następnie może być użyty przez zadanie. Ponieważ menedżer połączeń izoluje szczegóły implementacyjne obiektu połączenia od zadania, zadanie musi jedynie wywołać AcquireConnection metodę, aby nawiązać połączenie, i nie musi się przejmować innymi aspektami połączenia.

Example

Poniższy przykładowy kod demonstruje walidację ConnectionManager nazwy w metodach Validate i Execute oraz pokazuje, jak użyć AcquireConnection metody do nawiązania fizycznego połączenia w metodzie Execute (Wykonaj).

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