Kodowanie menedżer połączeń do niestandardowych
Po utworzeniu klasy, która dziedziczy ConnectionManagerBase utworzyć klasę i stosowane DtsConnectionAttribute atrybut do klasy, należy zastąpić stosowania właściwości i metod klasy podstawowej umożliwiają korzystanie z funkcji niestandardowej.
Aby przykłady menedżerów niestandardowego połączenia Zobacz Developing a User Interface for a Custom Connection Manager i Excel2 Custom Connection Manager Sample. Przykłady kodu w tym temacie są pobierane z próbki menedżer połączeń i niestandardowy programu SQL Server.
Uwaga
Większość zadań, źródła i miejsca docelowe, które są wbudowane w Integration Services działa tylko z określonych typów połączenia wbudowanego menedżerów. Dlatego te przykłady nie można testować wbudowane zadania i składniki.
Konfigurowanie menedżer połączeń
Ustawianie właściwość ConnectionString
The ConnectionString() właściwość is an important właściwość and the only właściwość unique to a custom menedżer połączeń. Menedżer połączeń używa do łączenia się z danymi zewnętrznymi wartość tej właściwość urządzenie źródłowe.Jeżeli jest połączenie kilku innych właściwości, takie jak nazwa serwera i bazy danych, aby utworzyć ciąg połączenia służy funkcja pomocnika do łączenia ciągu zastępując pewne wartości w szablonie ciąg połączenia z nową wartością podane przez użytkownika.Poniższy przykład kodu pokazuje implementację ConnectionString() Właściwość, która korzysta z funkcja pomocnika do łączenia ciąg.
' Default values.
Private _serverName As String = "(local)"
Private _databaseName As String = "AdventureWorks"
Private _connectionString As String = String.Empty
Private Const CONNECTIONSTRING_TEMPLATE As String = _
"Data Source=<servername>;Initial Catalog=<databasename>;Integrated Security=SSPI"
Public Property ServerName() As String
Get
Return _serverName
End Get
Set(ByVal value As String)
_serverName = value
End Set
End Property
Public Property DatabaseName() As String
Get
Return _databaseName
End Get
Set(ByVal value As String)
_databaseName = value
End Set
End Property
Public Overrides Property ConnectionString() As String
Get
UpdateConnectionString()
Return _connectionString
End Get
Set(ByVal value As String)
_connectionString = value
End Set
End Property
Private Sub UpdateConnectionString()
Dim temporaryString As String = CONNECTIONSTRING_TEMPLATE
If Not String.IsNullOrEmpty(_serverName) Then
temporaryString = temporaryString.Replace("<servername>", _serverName)
End If
If Not String.IsNullOrEmpty(_databaseName) Then
temporaryString = temporaryString.Replace("<databasename>", _databaseName)
End If
_connectionString = temporaryString
End Sub
// Default values.
private string _serverName = "(local)";
private string _databaseName = "AdventureWorks";
private string _connectionString = String.Empty;
private const string CONNECTIONSTRING_TEMPLATE = "Data Source=<servername>;Initial Catalog=<databasename>;Integrated Security=SSPI";
public string ServerName
{
get
{
return _serverName;
}
set
{
_serverName = value;
}
}
public string DatabaseName
{
get
{
return _databaseName;
}
set
{
_databaseName = value;
}
}
public override string ConnectionString
{
get
{
UpdateConnectionString();
return _connectionString;
}
set
{
_connectionString = value;
}
}
private void UpdateConnectionString()
{
string temporaryString = CONNECTIONSTRING_TEMPLATE;
if (!String.IsNullOrEmpty(_serverName))
{
temporaryString = temporaryString.Replace("<servername>", _serverName);
}
if (!String.IsNullOrEmpty(_databaseName))
{
temporaryString = temporaryString.Replace("<databasename>", _databaseName);
}
_connectionString = temporaryString;
}
Sprawdzanie poprawności Menedżer połączeń
Można zastąpić Validate(IDTSInfoEvents) Metoda, aby upewnić się, że Menedżer połączeń został poprawnie skonfigurowany. Jako minimum należy sprawdzić format ciąg połączenia i upewnij się, że podania wartości dla wszystkich argumentów.Wykonanie nie może być kontynuowana aż do momentu powrotu Menedżer połączeń Success() z Validate(IDTSInfoEvents) Metoda.
Poniższy przykład kodu pokazuje implementację Validate(IDTSInfoEvents) sprawia, że użytkownik określił nazwa serwera dla połączenia.
Public Overrides Function Validate(ByVal infoEvents As Microsoft.SqlServer.Dts.Runtime.IDTSInfoEvents) As Microsoft.SqlServer.Dts.Runtime.DTSExecResult
If String.IsNullOrEmpty(_serverName) Then
infoEvents.FireError(0, "SqlConnectionManager", "No server name specified", String.Empty, 0)
Return DTSExecResult.Failure
Else
Return DTSExecResult.Success
End If
End Function
public override Microsoft.SqlServer.Dts.Runtime.DTSExecResult Validate(Microsoft.SqlServer.Dts.Runtime.IDTSInfoEvents infoEvents)
{
if (String.IsNullOrEmpty(_serverName))
{
infoEvents.FireError(0, "SqlConnectionManager", "No server name specified", String.Empty, 0);
return DTSExecResult.Failure;
}
else
{
return DTSExecResult.Success;
}
}
Pozostające Menedżer połączeń
Zazwyczaj nie trzeba zaimplementować trwałość niestandardowych dla menedżer połączeń.Trwałość niestandardowego jest wymagany tylko wtedy, gdy złożone typy danych za pomocą właściwości obiektu.Aby uzyskać więcej informacji zobaczOpracowywanie niestandardowych obiektów dla usług integracja Services.
Praca z zewnętrznego urządzenie źródłowe danych
Metody, które obsługują połączenia ze źródłem danych zewnętrznych są najważniejszych metod menedżer połączeń niestandardowych.The AcquireConnection(Object) and ReleaseConnection(Object) methods are called at various times during both design czas and run czas.
Pobieranie połączenia
Należy zdecydować, jaki typ obiektu jest, aby AcquireConnection(Object) Metoda powinna zwrócić z menedżer połączeń niestandardowych. Na przykład Menedżer połączeń do pliku zwraca tylko ciąg, który zawiera ścieżka i nazwę pliku, dlatego zarządcę połączenia ADO.NET zwraca obiekt połączenia zarządzanego, który jest już otwarty.menedżer połączeń OLE DB zwraca macierzystym obiekt połączenia OLE DB, które nie mogą być używane z kod zarządzany.Niestandardowy Menedżer połączeń programu SQL Server, z którego pobierane są wstawki kodu programu w tym temacie, zwraca otwarty SqlConnection obiekt.
Użytkownicy programu Menedżer połączeń musi znać wcześniej typ obiektu, który ma być dodawana, dzięki czemu mogą rzutować na odpowiedni typ zwracany obiekt i uzyskać dostęp do jego metody i właściwości.
Public Overrides Function AcquireConnection(ByVal txn As Object) As Object
Dim sqlConnection As New SqlConnection
UpdateConnectionString()
With sqlConnection
.ConnectionString = _connectionString
.Open()
End With
Return sqlConnection
End Function
public override object AcquireConnection(object txn)
{
SqlConnection sqlConnection = new SqlConnection();
UpdateConnectionString();
{
sqlConnection.ConnectionString = _connectionString;
sqlConnection.Open();
}
return sqlConnection;
}
Zwalnianie połączenia
akcja Sporządzane w ReleaseConnection(Object) metoda zależy od typu obiektu, który zwrócił z AcquireConnection(Object) Metoda. Jeśli obiekt z otwartym połączeniem, należy go zamknąć i zwolnić wszystkie zasoby, który go używa.Jeśli AcquireConnection(Object) zwrócona wartość ciąg, żadne działanie musi należy podjąć.
Public Overrides Sub ReleaseConnection(ByVal connection As Object)
Dim sqlConnection As SqlConnection
sqlConnection = DirectCast(connection, SqlConnection)
If sqlConnection.State <> ConnectionState.Closed Then
sqlConnection.Close()
End If
End Sub
public override void ReleaseConnection(object connection)
{
SqlConnection sqlConnection;
sqlConnection = (SqlConnection)connection;
if (sqlConnection.State != ConnectionState.Closed)
sqlConnection.Close();
}
|
Historia zmian
Microsoft Learning |
---|
|