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.
Namespace Microsoft.Data.SqlClient berisi penyedia data .NET yang didukung untuk basis data yang kompatibel dengan SQL Server. Ini bermula sebagai fork dari System.Data.SqlClient dan tetap mempertahankan model pemrograman ADO.NET yang familier, sembari menghadirkan fitur-fitur baru SQL Server secara independen dari runtime .NET.
Gunakan Microsoft.Data.SqlClient untuk pengembangan baru.
Instal dan impor namespace
Tambahkan paket NuGet:
dotnet add package Microsoft.Data.SqlClient
Impor ruang nama:
using Microsoft.Data.SqlClient;
Sebagian besar aplikasi menggunakan SqlConnection, SqlCommand, SqlParameter, SqlDataReader, dan SqlTransaction. Untuk cakupan publik lengkap, lihat referensi API Microsoft.Data.SqlClient.
Hubungan dengan ADO.NET
ADO.NET adalah model akses data yang terintegrasi dalam .NET. Ini mendefinisikan abstraksi yang independen dari penyedia dalam System.Data.Common namespace, dan Microsoft. Data.SqlClient menyediakan implementasi konkret.
| Abstraksi ADO.NET | Tipe SqlClient | Kegunaan |
|---|---|---|
| DbConnection | SqlConnection | Membuka koneksi logis ke satu database. |
| DbCommand | SqlCommand | Menjalankan teks Transact-SQL (T-SQL) atau prosedur tersimpan. |
| DbParameter | SqlParameter | Mengirim nilai yang diketik secara terpisah dari teks perintah. |
| DbDataReader | SqlDataReader | Mengalirkan baris hasil dari server secara bertahap. |
| DbTransaction | SqlTransaction | Mengelompokkan perintah menjadi satu transaksi yang melakukan commit atau rollback sebagai satu unit. |
| DbDataAdapter | SqlDataAdapter | Mengisi dan memperbarui objek DataSet dan DataTable yang terputus. |
| DbBatch | SqlBatch | Mengirim beberapa perintah sebagai satu kumpulan pada kerangka kerja target yang didukung. |
Microsoft. Data.SqlClient juga menyediakan API khusus SQL Server seperti:
SqlBulkCopySqlConnectionStringBuilderSqlConfigurableRetryFactorySqlDependency- Dukungan autentikasi, enkripsi, dan tipe data khusus SQL Server
Program terhadap abstraksi ADO.NET ketika sebuah pustaka harus mendukung beberapa penyedia basis data. Gunakan tipe SqlClient ketika sebuah aplikasi menargetkan SQL Server dan membutuhkan fitur khusus penyedia, seperti autentikasi Microsoft Entra, Always Encrypted, salinan massal, parameter bernilai tabel, atau logika retry yang dapat dikonfigurasi. Simpan kode spesifik penyedia di belakang batas akses data jika sisa aplikasi harus tetap independen dari penyedia.
Akses terhubung dan terputus
Akses terhubung menjaga koneksi tetap terbuka saat perintah berjalan dan saat aplikasi membaca hasilnya. Permintaan tipikal mengikuti urutan berikut:
- Buat
SqlConnectiondari string koneksi, lalu buka. - Buat
SqlCommanddan tambahkan nilaiSqlParameter. - Jalankan perintah .
- Proses nilai skalar, hitungan baris yang terpengaruh, atau
SqlDataReader. - Lepaskan pembaca, perintah, dan koneksi.
Gunakan akses terhubung untuk sebagian besar API web, layanan, pekerja, dan aplikasi baris perintah.
SqlDataReader mengalirkan baris dan biasanya menggunakan memori lebih sedikit daripada memuat seluruh hasil ke dalam DataSet.
Akses terputus dari koneksi menggunakan SqlDataAdapter untuk menyalin data ke DataSet atau DataTable dalam memori. Aplikasi dapat menutup koneksi saat membaca atau mengubah data dalam memori, lalu terhubung kembali untuk mengirim pembaruan. Gunakan untuk pengikatan data, hubungan dan batasan dalam memori, suntingan offline yang akan Anda rekonsiliasi nanti, atau aplikasi yang sudah ada yang dibangun di sekitar DataAdapter. Untuk layanan baru yang berorientasi permintaan, mulai dengan SqlCommand dan SqlDataReader.
Masa pakai objek dan konkurensi
Buka dan buang SqlConnection untuk setiap unit kerja. Connection pooling menggunakan kembali koneksi fisik yang mendasarinya, jadi jangan biarkan satu koneksi global tetap terbuka selama masa pakai aplikasi. Hapus koneksi, perintah, pembaca, transaksi, dan objek salinan massal dengan cepat. Dalam kode asinkron, gunakan await using untuk tipe yang mengimplementasikan IAsyncDisposable pada kerangka kerja target, seperti SqlConnection dan SqlDataReader pada .NET, dan using biasa untuk tipe yang hanya mengimplementasikan IDisposable, seperti SqlBulkCopy.
SqlConnection, SqlCommand, SqlDataReader, dan SqlTransaction tidak mendukung penggunaan bersamaan dari beberapa thread. Berikan setiap operasi bersamaan koneksi sendiri dan gunakan connection pooling. Multiple Active Result Sets (MARS) memungkinkan lebih dari satu set hasil aktif pada satu koneksi, tetapi tidak membuat objek SqlClient menjadi thread-safe.
Hubungan dengan System.Data.SqlClient
System.Data.SqlClient adalah penyedia yang lebih lama yang disertakan dalam .NET Framework dan rilis .NET sebelumnya.
Microsoft.Data.SqlClient Menggunakan banyak nama tipe yang sama, tetapi memiliki paket, namespace, default, fitur, dan kebijakan dukungan yang berbeda.
Jangan merujuk kedua penyedia dalam kode aplikasi baru. Tipe dengan nama yang sama dari kedua paket tidak dapat dipertukarkan.
System.Data.SqlClient.SqlConnection, misalnya, tidak dapat dilewatkan jika Microsoft.Data.SqlClient.SqlConnection diperlukan.
Migrasi biasanya dimulai dengan menambahkan Microsoft.Data.SqlClient paket dan mengubah referensi namespace, tetapi Anda juga harus meninjau enkripsi koneksi, parameter, konfigurasi, dependensi transitif, dan perilaku runtime. Ikuti Migrasi dari System.Data.SqlClient ke Microsoft. Data.SqlClient sebelum Anda menerapkan.
Kompatibilitas versi
Versi paket driver independen dari versi .NET aplikasi dan versi mesin database. Periksa ketiganya:
| Komponen | Apa yang harus diverifikasi |
|---|---|
| Microsoft.Data.SqlClient | Garis rilis didukung dan berisi fitur yang digunakan aplikasi Anda. |
| .NET atau .NET Framework | Aplikasi menargetkan runtime yang didukung oleh rilis driver tersebut. |
| Basis data kompatibel dengan SQL Server | Rilis driver mendukung versi database dan server mendukung fitur protokol apa pun yang diminta, seperti TDS 8.0. |
Untuk matriks saat ini, lihat siklus hidup dukungan driver SqlClient.
Perubahan khusus versi
Rilis driver dapat menambahkan API, memindahkan dependensi opsional, dan mengubah default yang aman. Tinjau perubahan sebelum setiap pembaruan kecil atau besar.
Contohnya meliputi:
- Versi 4.0 diubah
Encryptmenjadi default ketrue. - Versi 5.0 memperkenalkan
SqlConnectionEncryptOptiondanEncrypt=Strictuntuk TDS 8.0. - Versi 5.2 memperkenalkan
SqlBatchpada target .NET modern yang didukung. - Versi 7.0 memindahkan autentikasi Microsoft Entra yang disediakan driver ke
Microsoft.Data.SqlClient.Extensions.Azure.
Lihat Apa yang Baru di Microsoft. Data.SqlClient untuk tautan catatan rilis dan ringkasan pembaruan.
Namespace dan paket terkait
Beberapa fitur menggunakan tipe di luar namespace utama atau paket opsional.
| Namespace atau paket | Kegunaan |
|---|---|
Microsoft.Data.SqlClient.Server |
Implementasi SqlClient dari SqlDataRecord dan SqlMetaData. |
Microsoft.Data.SqlTypes |
Tipe khusus SqlClient seperti SqlFileStream, SqlJson, dan SqlVector<T>. |
Microsoft.Data.SqlClient.Diagnostics |
Payload peristiwa diagnostik bertipe kuat. |
Microsoft.Data.SqlClient.Extensions.Azure |
Autentikasi Microsoft Entra yang disediakan oleh driver untuk versi 7.0 dan versi lebih baru. |
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider |
Integrasi Azure Key Vault untuk Always Encrypted. |
Jangan menyimpulkan persyaratan paket hanya dari namespace. Ikuti artikel fitur dan informasi ketergantungan paket NuGet untuk versi driver yang Anda gunakan.