Språk

Ansluta till datakällor i en anpassad uppgift

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Uppgifter kopplas till externa datakällor för att hämta eller spara data genom att använda en anslutningshanterare. Vid designtillfället representerar en anslutningshanterare en logisk anslutning och beskriver nyckelinformation såsom serverns namn och eventuella autentiseringsegenskaper. Vid körning anropar AcquireConnection uppgifter anslutningshanterarens metod för att etablera den fysiska anslutningen till datakällan.

Eftersom ett paket kan innehålla många uppgifter, var och en med anslutningar till olika datakällor, spårar paketet alla anslutningshanterare i en samling, samlingen Connections . Tasks använder samlingen i sitt paket för att hitta anslutningshanteraren som de kommer att använda under validering och körning. Samlingen Connections är den första parametern till Validate och Execute metoderna.

Du kan förhindra att uppgiften använder fel anslutningshanterare genom att visa objekten ConnectionManager från samlingen för användaren, genom att använda en dialogruta eller rullgardinslista i det grafiska användargränssnittet. Detta ger användaren ett sätt att välja bland endast de ConnectionManager objekt av rätt typ som ingår i paketet.

Uppgifter anropar AcquireConnection metoden för att etablera den fysiska anslutningen till datakällan. Metoden returnerar det underliggande anslutningsobjektet som sedan kan användas av uppgiften. Eftersom anslutningshanteraren isolerar implementeringsdetaljerna för det underliggande anslutningsobjektet från uppgiften, behöver uppgiften bara anropa AcquireConnection metoden för att etablera anslutningen, och behöver inte beröra andra aspekter av anslutningen.

Example

Följande exempelkod demonstrerar validering ConnectionManager av namnet i metoderna Validate och Execute, och visar hur metoden används AcquireConnection för att etablera den fysiska anslutningen i Execute-metoden.

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