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