Aracılığıyla paylaş


Bir özel Bağlantı Yöneticisi kodlama

Dan devralan bir sınıf oluşturduktan sonra ConnectionManagerBase taban sınıfı ve uygulanan DtsConnectionAttribute öznitelik sınıfa uygulaması özellikleri ve özel bir işlevi bilgisayarınızın. sağlamak için temel sınıfı yöntemleri kılmalıdır

Özel bağlantı yöneticileri örnekleri için bkz: Integration Services örnekleri üzerinde Codeplex.Bu konuda gösterilen kod örnekleri sql Server özel Bağlantı Yöneticisi örnek çizilir.

Not

Görevleri, kaynakları ve hedefleri içine yerleşik çoğu Integration Services çalışmak yalnızca belirli türdeki yerleşik bağlantı yöneticileri.Bu nedenle, bu örnekler yerleşik görevler ve bileşenlerini sınanamıyor.

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

ConnectionString özelliğini ayarlama

The ConnectionString property is an important property and the only property unique to a custom connection manager.Dış veri kaynağına bağlanmak için bu özelliğin değeri Bağlantı Yöneticisi kullanır kaynak.Diğer bazı özellikleri, sunucu adını ve bağlantı oluşturmak için veritabanı adı gibi birleştirerek, dize, bir araya getirmek için yardımcı işlevini kullanabilirsiniz dize belirli bir bağlantı değerleri değiştirerek dize yeni değeri kullanıcı tarafından sağlanan şablonu.Aşağıdaki kod örneği uygulaması gösterir ConnectionString üzerinde bir yardımcı dayanır özellik işlev dize. bir araya getirmek için

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

    }

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

Geçersiz kılma, Validate yöntem, Bağlantı Yöneticisi doğru şekilde yapılandırıldığından emin olmak için.En azından bağlantı biçimini doğrulamak dize ve tüm bağımsız değişkenler için değerleri sağlanmıştır emin olun.Bağlantı Yöneticisi'ni dönünceye kadar yürütme devam edemiyor Success dan Validate yöntem.

Aşağıdaki kod örneği uygulaması gösterir Validate , yapar emin olduğunu kullanıcının belirttiği bir sunucu adı bağlantı.

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

    }

Bağlantı Yöneticisi'ni kalıcı yapma

Genellikle, Bağlantı Yöneticisi için özel Kalıcılık uygulamak gerekmez.Özel Kalıcılık, nesnenin özelliklerini karmaşık veri türlerini kullandığınızda gereklidir.Daha fazla bilgi için bkz: Tümleştirme Hizmetleri için Özel Nesneler Geliştirme.

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

Dış veri kaynağına bağlanma desteği yöntemleri kaynak bir özel Bağlantı Yöneticisi'nin en önemli yöntemlerdir.The AcquireConnection and ReleaseConnection methods are called at various times during both design time and run time.

Bağlantı alınıyor

Ne tür bir nesne için uygun olduğuna karar vermek gerek duyduğunuz AcquireConnection yöntem Özel Bağlantı Yöneticisi'nden geri dönün.Örneğin, bir dosya Bağlantı Yöneticisi iken sadece 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 bir yönetilen bağlantı nesnesi döndürür.Bir ole db Bağlantı Yöneticisi dan kullanılamaz bir doğal ole db connection nesnesi döndüren yönetilen kod.Kendisinden bu konudaki kod parçacıkları alınır, özel sql Server Bağlantı Yöneticisi, açık verir SqlConnection nesne.

Bağlantı Yöneticisi'ni kullanıcılara önceden beklediğiniz böylece 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 override object AcquireConnection(object txn)
    {

      SqlConnection sqlConnection = new SqlConnection();

      UpdateConnectionString();

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

      return sqlConnection;

    }

Bağlantının serbest bırakılması

Sizi götürür eylem ReleaseConnection yöntem tarafından döndürülen nesne türüne bağlıdır AcquireConnection yöntem.Açık bir bağlantı nesnesinin ise kapatmalısınız ve kullandığı kaynakları serbest bırakmak için.If AcquireConnection returned only a string value, no action needs to be taken.

  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();
    }
Integration Services simgesi (küçük)Integration Services ile güncel kalın

En son karşıdan yüklemeler, makaleler, örnekler ve seçilen topluluk çözümleri yanı sıra Microsoft videolar için ziyaret Integration Services sayfa msdn veya TechNet:

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