Udostępnij za pośrednictwem


Menedżer połączeń niestandardowych kodowania

Po utworzeniu klasy, która dziedziczy z ConnectionManagerBase Klasa podstawowa i stosowane DtsConnectionAttribute atrybut do klasy, należy zastąpić wykonania właściwości i metod klasy podstawowej, aby zapewnić funkcje niestandardowe.

Dla próbek menedżerów połączenia niestandardowych, zobacz Integration Services próbki na witrynie Codeplex.Przykłady kodu zamieszczone w tym temacie są pobierane z SQL Server przykładowe niestandardowe Menedżera połączeń.

Ostrzeżenie

Większość zadań, źródła i miejsca docelowe, które zostały wbudowane w Integration Services pracować tylko z określonych rodzajów wbudowane połączenie menedżerów.Dlatego nie można testować tych próbek wbudowane zadania i składniki.

Konfigurowanie Menedżera połączeń

Ustawienie właściwości ConnectionString

ConnectionString Właściwość jest ważne właociwooci i tylko unikatowe dla menedżer połączeń niestandardowych.Menedżer połączeń używa wartości tej właściwość, aby połączyć dane zewnętrzne źródło.Jeśli są łączenie kilku innych właściwości, takich jak nazwa serwera i nazwa bazy danych utworzyć parametry połączenia służy funkcja helper gromadzi ciąg przez zastąpienie niektórych wartości w szablonie parametry połączenia nowej 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 = "AdventureWorks2008R2"
  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 = "AdventureWorks2008R2";
    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żera połączeń

Można zastąpić Validate metoda, aby upewnić się, że Menedżer połączeń został poprawnie skonfigurowany.Jako minimum należy sprawdzić format połączenia ciąg i upewnij się, że podania wartości dla wszystkich argumentów.Nie można kontynuować aż zwraca menedżer połączeń, Success z Validate metoda.

Poniższy przykład kodu pokazuje implementację Validate , 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;
      }

    }

Utrwalanie Menedżera połączeń

Zazwyczaj nie trzeba implementować niestandardowe trwałości dla menedżer połączeń.Trwałość niestandardowe jest wymagana tylko wtedy, gdy złożone typy danych za pomocą właściwości obiektu.Aby uzyskać więcej informacji, zobacz Projektowanie obiektów niestandardowych dla usług Integration Services.

Praca z zewnętrznego źródła danych

Metody, które obsługują się z danymi zewnętrznymi źródło są najważniejszych metod menedżer połączeń niestandardowych.AcquireConnection i ReleaseConnection są wywoływane w różnych czass podczas projektowania obu czas i uruchom czas.

Pobieranie połączenia

Należy zdecydować, jaki typ obiektu jest AcquireConnection Metoda zwraca z menedżer połączeń niestandardowych.Na przykład Menedżera połączeń pliku zwraca tylko ciąg, który zawiera ścieżka i nazwę pliku, dlatego ADO.Menedżer połączeń netto zwraca obiekt połączenia zarządzanych, który jest już otwarty.Menedżer połączeń OLE DB zwraca macierzystą obiektu połączenia OLE DB, który nie może być używany z kod zarządzany.Niestandardowe SQL Server menedżer połączeń, z którego pobierane są urywki kodu w tym temacie, zwraca Otwórz SqlConnection obiektu.

Użytkownicy menedżer połączeń musi znać z wyprzedzeniem typ obiektu oczekiwać tak można rzutować obiektu zwróconego do odpowiedniego typu, a dostęp do metod 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 podjęcie w ReleaseConnection metoda zależy od typu obiektu zwrócony z AcquireConnection metody.W przypadku obiektu otwartego połączenia, należy zamknąć go i zwolnić wszystkie zasoby, które jest używane.Jeśli AcquireConnection zwracane tylko wartość ciąg, nie akcja 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();
    }
Ikona usług Integration Services (mała)Bieżąco z usług integracji

Najnowsze pliki do pobrania, artykuły, próbki i wideo firmy Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.