Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
SSIS Integration Runtime di Azure Data Factory
Setelah Anda membuat kelas yang mewarisi dari ConnectionManagerBase kelas dasar, dan menerapkan DtsConnectionAttribute atribut ke kelas , Anda harus mengambil alih implementasi properti dan metode kelas dasar untuk menyediakan fungsionalitas kustom Anda.
Untuk sampel manajer koneksi kustom, lihat Mengembangkan Antarmuka Pengguna untuk Pengelola Sambungan Kustom. Contoh kode yang diperlihatkan dalam topik ini diambil dari sampel Pengelola Sambungan Kustom SQL Server.
Catatan
Sebagian besar tugas, sumber, dan tujuan yang telah dibangun ke dalam Layanan Integrasi hanya berfungsi dengan jenis manajer koneksi bawaan tertentu. Oleh karena itu, sampel ini tidak dapat diuji dengan tugas dan komponen bawaan.
Mengonfigurasi Pengelola Sambungan
Mengatur Properti ConnectionString
Properti ConnectionString adalah properti penting dan satu-satunya properti yang unik untuk manajer koneksi kustom. Pengelola koneksi menggunakan nilai properti ini untuk menyambungkan ke sumber data eksternal. Jika Anda menggabungkan beberapa properti lain, seperti nama server dan nama database, untuk membuat string koneksi, Anda dapat menggunakan fungsi pembantu untuk merakit string dengan mengganti nilai tertentu dalam templat string koneksi dengan nilai baru yang disediakan oleh pengguna. Contoh kode berikut menunjukkan implementasi ConnectionString properti yang bergantung pada fungsi pembantu untuk merakit string.
' 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;
}
Memvalidasi Pengelola Sambungan
Anda mengambil Validate alih metode untuk memastikan bahwa manajer koneksi telah dikonfigurasi dengan benar. Minimal, Anda harus memvalidasi format string koneksi dan memastikan bahwa nilai telah disediakan untuk semua argumen. Eksekusi tidak dapat dilanjutkan sampai manajer koneksi kembali Success dari Validate metode .
Contoh kode berikut menunjukkan implementasi Validate yang memastikan bahwa pengguna telah menentukan nama server untuk koneksi.
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;
}
}
Mempertahankan Pengelola Sambungan
Biasanya, Anda tidak perlu menerapkan persistensi kustom untuk manajer koneksi. Persistensi kustom hanya diperlukan ketika properti objek menggunakan jenis data yang kompleks. Untuk informasi selengkapnya, lihat Mengembangkan Objek Kustom untuk Layanan Integrasi.
Bekerja dengan Sumber Data Eksternal
Metode yang mendukung menyambungkan ke sumber data eksternal adalah metode terpenting dari manajer koneksi kustom. Metode AcquireConnection dan ReleaseConnection dipanggil pada berbagai waktu selama waktu desain dan waktu proses.
Memperoleh Koneksi
Anda perlu memutuskan jenis objek apa yang sesuai untuk metode yang AcquireConnection akan dikembalikan dari manajer koneksi kustom Anda. Misalnya, manajer koneksi File hanya mengembalikan string yang berisi jalur dan nama file, sedangkan manajer koneksi ADO.NET mengembalikan objek koneksi terkelola yang sudah terbuka. Manajer koneksi OLE DB mengembalikan objek koneksi OLE DB asli yang tidak dapat digunakan dari kode terkelola. Manajer koneksi SQL Server kustom, tempat cuplikan kode dalam topik ini diambil, mengembalikan objek SqlConnection terbuka.
Pengguna manajer koneksi Anda perlu mengetahui terlebih dahulu jenis objek apa yang diharapkan, sehingga mereka dapat melemparkan objek yang dikembalikan ke jenis yang sesuai dan mengakses metode dan propertinya.
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;
}
Melepaskan Koneksi
Tindakan yang Anda ambil dalam ReleaseConnection metode tergantung pada jenis objek yang Anda kembalikan dari AcquireConnection metode . Jika ada objek koneksi terbuka, Anda harus menutupnya dan untuk merilis sumber daya apa pun yang digunakannya. Jika AcquireConnection hanya mengembalikan nilai string, tidak ada tindakan yang perlu diambil.
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();
}
Lihat Juga
Membuat Pengelola Sambungan Kustom
Mengembangkan Antarmuka Pengguna untuk Pengelola Sambungan Kustom