Bir özel bağlantı Yöneticisi kodlama

Dan devralan bir sınıf oluşturduktan sonra ConnectionManagerBasetemel sınıf ve uygulanan DtsConnectionAttributeözniteliği sınıfa uygulaması özellikleri ve yöntemleri, özel işlevsellik sağlamak için temel sınıf geçersiz kılmalısınız.

Özel bağlantı yöneticileri örnekler için bkz: Developing a User Interface for a Custom Connection Managerve Excel2 Custom Connection Manager Sample. Bu konuda gösterilen kod örnekleri SQL Server özel bağlantı Yöneticisi örnek çizilir.

[!NOT]

Görevleri, kaynakları ve hedefleri içine inşa edilmiştir çoğu Integration Servicesyalnızca belirli türleri dahili bağlantı yöneticileri ile. Bu nedenle, bu örnekler bileşenleri ve yerleşik görevler sınanamıyor.

Bağlantı Yöneticisi yapılandırma

ConnectionString özelliğini ayarlama

ConnectionStringÖzelliği olan bir önemli özelliği ve bir özel bağlantı Yöneticisi için benzersiz tek özelliği. Bağlantı Yöneticisi, dış veri kaynağına bağlanmak için bu özelliğin değeri kullanır. Diğer bazı özellikleri, sunucu adı ve veritabanı adı gibi birleştiren eğer bağlantı dizesini oluşturmak için size yardımcı fonksiyon yeni değeri kullanıcı tarafından sağlanan bir bağlantı dizesi şablonu belirli değerleri değiştirerek dizeyi birleştirmek için kullanabilirsiniz. Aşağıdaki kod örneği uygulaması gösterir ConnectionStringdize toplamaya yardımcı fonksiyon üzerinde dayanan özellik.

  ' 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 _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;

    }
    // 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;

    }

Bağlantı Yöneticisi doğrulanıyor

Eğer geçersiz ValidateBağlantı Yöneticisi düzgün yapılandırıldığından emin olmak için yöntemi. En azından bağlantı dizesi biçimini doğrulamak ve tüm bağımsız değişkenler için değerleri sağlanmıştır emin olun gerekir. Bağlantı Yöneticisi dönene kadar yürütme devam edemiyor Successdan Validateyöntemi.

Aşağıdaki kod örneği uygulaması gösterir Validateyapan bir sunucu adı bağlantı için belirtilen kullanıcı emin.

  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 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;
      }

    }
    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;
      }

    }

Bağlantı Yöneticisi persisting

Genellikle, bir bağlantı Yöneticisi özel kalıcılık uygulamak zorunda değildir. Özel kalıcılık, bir nesnenin özelliklerini karmaşık veri türlerini kullandığınızda gereklidir. Daha fazla bilgi için, bkz. Tümleştirme Hizmetleri özel nesne geliştirme.

Dış veri kaynağı ile çalışma

Bir dış veri kaynağına bağlanma desteği yöntemleri, bir özel bağlantı Yöneticisi'nin en önemli yöntemlerdir. AcquireConnectionVe ReleaseConnectionyöntemleri, hem tasarım zamanında hem de çalışma zamanı sırasında çeşitli zamanlarda denir.

Bağlantı alınıyor

Ne tür bir nesne için uygun olduğuna karar vermek gereken AcquireConnectionyöntem-e doğru senin özel bağlantı Yöneticisi'nden dönüş. Örneğin, dosya Bağlantı Yöneticisi ise bir yol ve dosya adı içeren bir dize döndürür bir ado.Ağ Bağlantısı Yöneticisi zaten açık olan yönetilen bağlantı nesnesi döndürür. Bir ole db Bağlantı Yöneticisi, yönetilen kod için kullanılamayan yerel ole db bağlantı nesnesi döndürür. Hangi kod parçacıkları bu konudaki alınır, özel SQL Server Bağlantı Yöneticisi açık verir SqlConnectionnesnesini.

Kullanıcılar bağlantı Yöneticisi, önceden bekliyoruz, onlar uygun türü için döndürülen nesne artığını ve yöntemleri ve özellikleri erişmek için nesne türünü bilmeniz gerekir.

  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 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;

    }
    public override object AcquireConnection(object txn)
    {

      SqlConnection sqlConnection = new SqlConnection();

      UpdateConnectionString();

      {
        sqlConnection.ConnectionString = _connectionString;
        sqlConnection.Open();
      }

      return sqlConnection;

    }

Bağlantıyı bırakmadan

Sizi de eylem ReleaseConnectionyöntemi dan döndürülen nesne türüne bağlıdır AcquireConnectionyöntemi. Açık bağlantı nesne varsa kapatmanız gerekir ve bunu kullandığı kaynakları serbest bırakmak. Eğer AcquireConnectionsadece bir dize değeri döndürdü, hiçbir eylem alınması gerekir.

  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 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();
    }
    public override void ReleaseConnection(object connection)
    {
      SqlConnection sqlConnection;
      sqlConnection = (SqlConnection)connection;
      if (sqlConnection.State != ConnectionState.Closed)
        sqlConnection.Close();
    }
Integration Services simgesi (küçük) Integration Services ile güncel kalın

En son karşıdan yüklemeler, makaleler, örnekler ve Microsoft video yanı sıra topluluk seçili çözümleri için ziyaret Integration ServicesMSDN sayfası:


Bu güncelleştirmelerle ilgili otomatik bildirim almak için, sayfadaki RSS akışlarına abone olun.

Ayrıca bkz.

Görevler

Bir özel bağlantı Yöneticisi oluşturma

Bir özel bağlantı Yöneticisi kullanıcı arabirimi geliştirme