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: .NET Framework
.NET
.NET Standard
Kelas AppContext memungkinkan SqlClient untuk menyediakan fungsionalitas baru sambil terus mendukung pemanggil yang bergantung pada perilaku sebelumnya. Pengguna dapat menolak perubahan perilaku dengan mengatur sakelar AppContext tertentu.
Aktifkan MultiSubnetFailover secara default
Berlaku untuk: .NET Framework; .NET; .NET Standard
(Tersedia dimulai dengan versi 7.0)
Untuk mengatur MultiSubnetFailover=true secara global tanpa memodifikasi string koneksi individual, Anda dapat mengatur sakelar AppContext "Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault" ke true saat pengaktifan aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault", true);
Anda juga dapat mengaktifkan sakelar ini di App.Config:
<runtime>
<AppContextSwitchOverrides value="Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault=true" />
</runtime>
Saat diaktifkan, semua koneksi berperilaku seolah-olah MultiSubnetFailover=true diatur dalam string koneksi. Sakelar ini dinonaktifkan pada pengaturan awal.
Mengaktifkan multipleksing paket untuk pembacaan asinkron
Berlaku untuk: .NET Framework; .NET; .NET Standard
(Tersedia dimulai dengan versi 7.0)
Multipleks paket meningkatkan performa untuk operasi baca asinkron besar seperti ExecuteReaderAsync dengan kumpulan hasil besar, skenario streaming, atau pengambilan data massal. Fitur ini dikendalikan oleh dua pengaturan AppContext pilihan. Mengatur kedua sakelar ke false mengaktifkan jalur pemrosesan asinkron baru:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityAsyncBehaviour", false);
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityProcessSni", false);
Secara default, kedua sakelar adalah true, yang mempertahankan perilaku yang ada (kompatibel).
Aktifkan ekstensi fitur Agen Pengguna
Berlaku untuk: .NET Framework; .NET; .NET Standard
(Tersedia dimulai dengan versi 7.0)
Ketika sakelar AppContext "Switch.Microsoft.Data.SqlClient.EnableUserAgent" diaktifkan, driver mengirim detail agen pengguna ke server sebagai bagian dari koneksi. Informasi ini membantu pemecahan masalah dan mengukur penggunaan driver berdasarkan versi dan sistem operasi. Sakelar ini dinonaktifkan secara bawaan. Untuk mengaktifkannya, atur sakelar AppContext ke true saat pengaktifan aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableUserAgent", true);
Mengaktifkan perilaku pemotongan desimal
Berlaku untuk: .NET Framework; .NET; .NET Standard
Dimulai dengan Microsoft.Data.SqlClient 2.0, data desimal dibulatkan secara default, seperti yang dilakukan oleh SQL Server. Untuk mengaktifkan perilaku pemotongan sebelumnya, Anda bisa mengonfigurasi sakelar AppContext "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal" ke true saat memulai aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal", true);
Mengaktifkan jaringan terkelola pada Windows
Berlaku untuk: .NET; .NET Standard
(Tersedia dimulai dengan versi 2.0)
Di Windows, SqlClient menggunakan implementasi asli antarmuka jaringan SNI secara default. Untuk mengaktifkan penggunaan implementasi SNI terkelola, Anda dapat mengatur sakelar AppContext "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows" ke true saat pengaktifan aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);
Sakelar ini mengalihkan perilaku driver untuk menggunakan implementasi jaringan terkelola di proyek .NET Core 2.1+ dan .NET Standard 2.0+ di Windows, menghilangkan semua dependensi pada pustaka asli untuk pustaka Microsoft.Data.SqlClient. Ini hanya untuk tujuan pengujian dan penelusuran kesalahan.
Catatan
Ada beberapa perbedaan yang diketahui jika dibandingkan dengan implementasi asli. Misalnya, implementasi terkelola tidak mendukung Autentikasi Windows non-domain.
Menonaktifkan Jaringan dengan Resolusi IP Transparan
Berlaku untuk: .NET Framework
Resolusi IP Jaringan Transparan (TNIR) adalah revisi dari fitur MultiSubnetFailover yang sudah ada. TNIR memengaruhi urutan koneksi driver dalam kasus di mana IP pertama yang diresolusikan dari nama host tidak merespons, dan terdapat beberapa IP yang terkait dengan nama host. TNIR berinteraksi dengan MultiSubnetFailover untuk menyediakan tiga urutan koneksi berikut:
- 0: Satu IP dicoba, diikuti oleh semua IP secara paralel
- 1: Semua IP dicoba secara paralel
- 2: Semua IP dicoba satu demi satu
| Resolusi IP Jaringan Transparan | MultiSubnetFailover | Perilaku |
|---|---|---|
| Benar | Benar | 1 |
| Benar | False | 0 |
| False | Benar | 1 |
| False | Salah | 2 |
TransparentNetworkIPResolution diaktifkan secara default. MultiSubnetFailover dinonaktifkan secara default. Untuk menonaktifkan TNIR, Anda dapat mengatur sakelar AppContext "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString" ke true saat pengaktifan aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString", true);
Untuk informasi selengkapnya tentang mengatur properti ini, lihat dokumentasi untuk SqlConnection.ConnectionString Property.
Aktifkan batas waktu minimum selama masuk
Berlaku untuk: .NET Framework; .NET; .NET Standard
Untuk mencegah upaya masuk menunggu tanpa batas waktu, Anda dapat mengatur AppContext switch Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin ke true saat pengaktifan aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin", false);
Menonaktifkan perilaku pemblokiran ReadAsync
Berlaku untuk: .NET Framework; .NET; .NET Standard
Mulai versi 3.0, ReadAsync berjalan secara asinkron. Versi sebelumnya menjalankan ReadAsync secara sinkron dan memblokir utas panggilan pada .NET Framework. Untuk mengontrol perilaku pemblokiran ini, Anda dapat mengatur sakelar AppContext Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking ke true atau false saat memulai app.
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking", false);
Mengaktifkan perilaku null rowversion
Berlaku untuk: .NET Framework; .NET; .NET Standard
Mulai versi 3.0, ketika rowversion memiliki nilai null, SqlDataReader mengembalikan nilai DBNull alih-alih byte[] yang kosong. Untuk mengaktifkan perilaku lama mengembalikan nilai kosong byte[], aktifkan sakelar AppContext Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior saat startup aplikasi.
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior", true);
Menghilangkan peringatan tentang TLS yang tidak aman
Berlaku untuk: .NET Framework; .NET; .NET Standard
(Tersedia dimulai dengan versi 4.0.1)
Saat menggunakan Encrypt=false dalam string koneksi, peringatan keamanan akan dikeluarkan di konsol jika versi TLS 1.2 atau lebih rendah. Peringatan ini dapat disembunyikan dengan mengaktifkan pengalihan AppContext berikut pada startup aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.SuppressInsecureTLSWarning", true);
Abaikan Mitra Failover yang Disediakan Server
Berlaku untuk: .NET Framework; .NET; .NET Standard
(Tersedia mulai dari versi 5.1.8, 6.0.4, dan 6.1.3)
Setelah failover, informasi mitra failover yang disediakan oleh server lebih diutamakan daripada informasi mitra failover yang tercantum dalam string koneksi. Untuk mengabaikan informasi mitra failover yang disediakan oleh server dan hanya mempertimbangkan informasi mitra failover yang disediakan dalam string koneksi, aktifkan pengalihan AppContext ini pada startup aplikasi:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);
Lihat juga
Kelas AppContext