Conectando-se a fontes de dados em uma tarefa personalizada

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

As tarefas ligam-se a fontes de dados externas para recuperar ou guardar dados através de um gestor de ligações. No momento do design, um gestor de ligação representa uma ligação lógica e descreve informações-chave como o nome do servidor e quaisquer propriedades de autenticação. Em tempo de execução, as tarefas chamam o AcquireConnection método do gestor de conexões para estabelecer a ligação física à fonte de dados.

Como um pacote pode conter muitas tarefas, cada uma das quais pode ter ligações a diferentes fontes de dados, o pacote acompanha todos os gestores de ligação numa coleção, a Connections coleção. As tarefas usam a coleção no seu pacote para encontrar o gestor de conexões que irão usar durante a validação e execução. A Connections coleção é o primeiro parâmetro dos Validate métodos e Execute .

Pode evitar que a tarefa use o gestor de ligações errado ao mostrar os ConnectionManager objetos da coleção ao utilizador, usando uma caixa de diálogo ou uma lista suspensa na interface gráfica. Isto dá ao utilizador uma forma de selecionar entre apenas os ConnectionManager objetos do tipo apropriado contidos no pacote.

As tarefas chamam o AcquireConnection método para estabelecer a ligação física à fonte de dados. O método devolve o objeto de ligação subjacente que pode então ser usado pela tarefa. Como o gestor de conexões isola os detalhes de implementação do objeto de ligação subjacente da tarefa, a tarefa só tem de chamar o AcquireConnection método para estabelecer a ligação, sem se preocupar com outros aspetos da ligação.

Example

O seguinte código de exemplo demonstra a validação do ConnectionManager nome nos métodos Validar e Executar, e mostra como usar o AcquireConnection método para estabelecer a ligação física no método Executar.

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