Połączenia ze źródłami danych w niestandardowego zadania
Połącz zadania z zewnętrznymi źródłami danych do pobierania lub zapisywanie danych za pomocą menedżer połączeń.W projekcie czas, Menedżer połączeń reprezentuje połączenie logiczne i opisano najważniejsze informacje, takie jak nazwa serwera i wszystkie właściwości uwierzytelnianie.Przy uruchomieniu czas, wywołanie zadania AcquireConnection metoda menedżer połączeń do ustanawiania fizycznego połączenia źródło danych.
Ponieważ pakiet może zawierać wiele zadań, z których każdy może być połączenia różnych źródeł danych, pakiet śledzi wszystkich menedżerów połączenia kolekcja, Connections kolekcja.Zadania użyć kolekcja w ich pakiet Aby znaleźć połączenia Menedżera, który zostanie użyty podczas sprawdzania poprawności i wykonanie.Connections kolekcja jest pierwszy parametr Validate i Execute metody.
Można uniemożliwić korzystanie z menedżer połączeń niewłaściwy wyświetlając zadania ConnectionManager obiektów z kolekcja do użytkownika za pomocą okna dialogowego lub drop -niedziałający na liście interfejs graficznego.Dzięki temu użytkownik sposobem wybrania spośród tylko ConnectionManager obiekty odpowiedniego typu, które są zawarte w pakiet.
Zadania wywołanie AcquireConnection metoda określenia fizycznego połączenia źródło danych.Metoda zwraca podstawowej obiekt połączenia, które mogą być następnie używane przez zadanie.Ponieważ Menedżer połączeń został zidentyfikowany szczegółów implementacji obiektu podstawowego połączenia z zadania, zadanie ma tylko wywołania AcquireConnection metoda ustanawiania połączenia, a nie ma zajmować się innymi aspektami połączenia.
Przykład
Następujący przykładowy kod ilustruje sprawdzanie poprawności ConnectionManager nazwy sprawdzania poprawności i wykonywania metod i przedstawiono sposób użycia AcquireConnection metody ustanawiania połączenia fizycznego w Metoda Execute.
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
|