Connessione alle origini dati in un'attività personalizzataConnecting to Data Sources in a Custom Task

Le attività si connettono alle origini dati esterne per recuperare o salvare i dati tramite una gestione connessione.Tasks connect to external data sources to retrieve or save data by using a connection manager. In fase di progettazione una gestione connessione rappresenta una connessione logica, in cui sono descritte informazioni chiave come il nome del server e le eventuali proprietà di autenticazione.At design time, a connection manager represents a logical connection, and describes key information such as the server name and any authentication properties. In fase di esecuzione le attività chiamano il metodo AcquireConnection della gestione connessione per stabilire la connessione fisica all'origine dati.At run time, tasks call the AcquireConnection method of the connection manager to establish the physical connection to the data source.

Poiché un pacchetto può contenere molte attività, ognuna delle quali con connessioni a origini dati diverse, tutte le gestioni connessioni vengono registrate in una raccolta, Connections.Because a package can contain many tasks, each of which may have connections to different data sources, the package tracks all the connection managers in a collection, the Connections collection. Le attività utilizzano la raccolta presente nel relativo pacchetto per individuare la gestione connessione che utilizzeranno durante la convalida e l'esecuzione.Tasks use the collection in their package to find the connection manager that they will use during validation and execution. La raccolta Connections costituisce il primo parametro per i metodi Validate e Execute.The Connections collection is the first parameter to the Validate and Execute methods.

È possibile impedire all'attività di utilizzare la gestione connessione errata rendendo gli oggetti ConnectionManager della raccolta visualizzabili dall'utente tramite una finestra di dialogo o un elenco a discesa nell'interfaccia utente grafica.You can prevent the task from using the wrong connection manager by displaying the ConnectionManager objects from the collection to the user, by using a dialog box or drop-down list in the graphical user interface. In questo modo l'utente ha la possibilità di effettuare una selezione solo tra gli oggetti ConnectionManager del tipo appropriato contenuti nel pacchetto.This gives the user a way to select from among only those ConnectionManager objects of the appropriate type that are contained in the package.

Le attività chiamano il metodo AcquireConnection per stabilire la connessione fisica all'origine dati.Tasks call the AcquireConnection method to establish the physical connection to the data source. Il metodo restituisce l'oggetto connessione sottostante che può essere utilizzato dall'attività.The method returns the underlying connection object that can then be used by the task. Poiché la gestione connessione isola i dettagli di implementazione dell'oggetto connessione sottostante dall'attività, quest'ultima deve limitarsi a chiamare il metodo AcquireConnection per stabilire la connessione, senza intervenire in altri aspetti della connessione.Because the connection manager isolates the implementation details of the underlying connection object from the task, the task only has to call the AcquireConnection method to establish the connection, and does not have to be concerned with other aspects of the connection.

EsempioExample

Nel codice di esempio seguente è illustrata la convalida del nome di ConnectionManager nei metodi Validate ed Execute e viene mostrato come utilizzare il metodo AcquireConnection per stabilire la connessione fisica nel metodo Execute.The following sample code demonstrates validation of the ConnectionManager name in the Validate and Execute methods, and shows how to use the AcquireConnection method to establish the physical connection in the Execute method.

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  

Vedere ancheSee Also

Integration Services ( SSIS ) Connessioni Integration Services (SSIS) Connections
Creare gestioni connessioniCreate Connection Managers