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