Taal

Verbinding maken met gegevensbronnen in een aangepaste taak

Van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Taken maken verbinding met externe databronnen om data op te halen of op te slaan via een verbindingsbeheerder. Tijdens het ontwerpen vertegenwoordigt een verbindingsmanager een logische verbinding en beschrijft hij belangrijke informatie zoals de servernaam en eventuele authenticatie-eigenschappen. Tijdens het uitvoeren roepen taken de AcquireConnection methode van de verbindingsmanager aan om de fysieke verbinding met de databron tot stand te brengen.

Omdat een pakket veel taken kan bevatten, die elk verbindingen kunnen hebben met verschillende databronnen, volgt het pakket alle verbindingsbeheerders in een collectie, de Connections collectie. Taken gebruiken de verzameling in hun pakket om de verbindingsmanager te vinden die ze zullen gebruiken tijdens validatie en uitvoering. De Connections verzameling is de eerste parameter voor de Validate en Execute methoden.

Je kunt voorkomen dat de taak de verkeerde verbindingsmanager gebruikt door de ConnectionManager objecten uit de collectie aan de gebruiker te tonen, door een dialoogvenster of dropdownlijst in de grafische gebruikersinterface te gebruiken. Dit geeft de gebruiker een manier om alleen uit die ConnectionManager objecten van het juiste type te kiezen die in het pakket zitten.

Taken roepen de AcquireConnection methode aan om de fysieke verbinding met de databron tot stand te brengen. De methode geeft het onderliggende verbindingsobject terug dat vervolgens door de taak kan worden gebruikt. Omdat de verbindingsmanager de implementatiedetails van het onderliggende verbindingsobject isoleert van de taak, hoeft de taak alleen de AcquireConnection methode aan te roepen om de verbinding tot stand te brengen, en hoeft deze zich niet bezig te houden met andere aspecten van de verbinding.

Example

De volgende voorbeeldcode toont validatie van de ConnectionManager naam in de Validate- en Execute-methoden, en laat zien hoe de AcquireConnection methode gebruikt kan worden om de fysieke verbinding in de Execute-methode tot stand te brengen.

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