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.
Topik ini membahas Penyedia Data Microsoft SqlClient untuk dukungan SQL Server untuk ketersediaan tinggi, pemulihan bencana -- Grup Ketersediaan AlwaysOn. Fitur Grup Ketersediaan AlwaysOn ditambahkan ke SQL Server 2012. Untuk informasi selengkapnya tentang Grup Ketersediaan AlwaysOn, lihat Buku SQL Server Online.
Anda sekarang dapat menentukan pendengar grup ketersediaan grup ketersediaan (ketersediaan tinggi, pemulihan bencana) grup ketersediaan (AG) atau Instans Kluster Failover SQL Server 2012 di properti koneksi. Jika aplikasi SqlClient tersambung ke database Always On yang gagal, koneksi asli rusak dan aplikasi harus membuka koneksi baru untuk melanjutkan pekerjaan setelah failover.
Jika Anda tidak tersambung ke pendengar grup ketersediaan atau Instans Kluster Failover SQL Server 2012, dan jika beberapa alamat IP dikaitkan dengan nama host, SqlClient akan melakukan iterasi secara berurutan melalui semua alamat IP yang terkait dengan entri DNS. Ini bisa memakan waktu jika alamat IP pertama yang dikembalikan oleh server DNS tidak terikat ke kartu antarmuka jaringan (NIC). Saat menyambungkan ke listener grup ketersediaan atau Instans Kluster Failover SQL Server 2012, SqlClient mencoba membuat koneksi ke semua alamat IP secara paralel dan jika upaya koneksi berhasil, driver akan membuang upaya koneksi yang tertunda.
Catatan
Meningkatkan batas waktu koneksi dan menerapkan logika coba lagi koneksi akan meningkatkan probabilitas bahwa aplikasi akan terhubung ke grup ketersediaan. Selain itu, karena koneksi dapat gagal karena failover, Anda harus menerapkan logika coba lagi koneksi, mencoba kembali koneksi yang gagal sampai koneksi tersambung kembali.
Properti koneksi berikut ini didukung di Penyedia Data Microsoft SqlClient untuk SQL Server:
ApplicationIntentMultiSubnetFailover
Anda dapat memodifikasi kata kunci string koneksi ini secara terprogram dengan:
Menyambungkan dengan MultiSubnetFailover.
Selalu tentukan MultiSubnetFailover=True saat menyambungkan ke listener grup ketersediaan SQL Server 2012 atau Instans Kluster Failover SQL Server 2012.
MultiSubnetFailover memungkinkan failover yang lebih cepat untuk semua Grup Ketersediaan dan atau Instans Kluster Failover di SQL Server 2012 dan akan secara signifikan mengurangi waktu failover untuk topologi AlwaysOn tunggal dan multi-subnet. Selama failover multi-subnet, klien akan mencoba koneksi secara paralel. Selama failover subnet, akan secara agresif mencoba kembali koneksi TCP.
Properti MultiSubnetFailover koneksi menunjukkan bahwa aplikasi sedang disebarkan dalam grup ketersediaan atau Instans Kluster Failover SQL Server 2012 dan bahwa SqlClient akan mencoba menyambungkan ke database pada instans SQL Server utama dengan mencoba menyambungkan ke semua alamat IP. Ketika MultiSubnetFailover=True ditentukan untuk koneksi, klien mencoba kembali koneksi TCP mencoba lebih cepat daripada interval transmisi ulang TCP default sistem operasi. Ini memungkinkan koneksi ulang yang lebih cepat setelah failover Grup Ketersediaan AlwaysOn atau Instans Kluster Failover AlwaysOn, dan berlaku untuk Grup Ketersediaan tunggal dan multi-subnet dan Instans Kluster Failover.
Untuk informasi selengkapnya tentang kata kunci string koneksi di SqlClient, lihat ConnectionString.
Menentukan MultiSubnetFailover=True saat menyambungkan ke sesuatu selain pendengar grup ketersediaan atau Instans Kluster Failover SQL Server 2012 dapat mengakibatkan dampak performa negatif, dan tidak didukung.
Gunakan panduan berikut untuk menyambungkan ke server dalam grup ketersediaan atau Instans Kluster Failover SQL Server 2012:
Gunakan properti koneksi
MultiSubnetFailoversaat menyambungkan ke satu subnet atau multi-subnet; ini akan meningkatkan performa untuk keduanya.Untuk menyambungkan ke grup ketersediaan, tentukan pendengar grup ketersediaan grup ketersediaan sebagai server di string koneksi Anda.
Menyambungkan ke instans SQL Server yang dikonfigurasi dengan lebih dari 64 alamat IP akan menyebabkan kegagalan koneksi.
Perilaku aplikasi yang menggunakan
MultiSubnetFailoverproperti koneksi tidak terpengaruh berdasarkan jenis autentikasi: Autentikasi SQL Server, Autentikasi Kerberos, atau Autentikasi Windows.Tingkatkan nilai
Connect Timeoutuntuk mengakomodasi waktu failover dan mengurangi upaya coba lagi koneksi aplikasi.Transaksi terdistribusi tidak didukung.
Jika perutean baca-saja tidak berlaku, menyambungkan ke lokasi replika sekunder akan gagal dalam situasi berikut:
Jika lokasi replika sekunder tidak dikonfigurasi untuk menerima koneksi.
Jika aplikasi menggunakan
ApplicationIntent=ReadWrite(dibahas di bawah) dan lokasi replika sekunder dikonfigurasi untuk akses baca-saja.
SqlDependency tidak didukung pada replika sekunder baca-saja.
Koneksi akan gagal jika replika utama dikonfigurasi untuk menolak beban kerja baca-saja dan string koneksi berisi ApplicationIntent=ReadOnly.
Memutakhirkan untuk menggunakan kluster multi-subnet dari pencerminan database
Kesalahan koneksi (ArgumentException) akan terjadi jika MultiSubnetFailover kata kunci koneksi dan Failover Partner ada dalam string koneksi, atau jika MultiSubnetFailover=True dan protokol selain TCP digunakan. Kesalahan (SqlException) juga akan terjadi jika MultiSubnetFailover digunakan dan SQL Server mengembalikan respons mitra failover yang menunjukkan bahwa itu adalah bagian dari pasangan pencerminan database.
Jika Anda meningkatkan aplikasi SqlClient yang saat ini menggunakan pencerminan database ke skenario multi-subnet, Anda harus menghapus Failover Partner properti koneksi dan menggantinya dengan MultiSubnetFailover diatur ke True dan mengganti nama server dalam string koneksi dengan pendengar grup ketersediaan. Jika string koneksi menggunakan Failover Partner dan MultiSubnetFailover=True, driver akan menghasilkan kesalahan. Namun, jika string koneksi menggunakan Failover Partner dan MultiSubnetFailover=False (atau ApplicationIntent=ReadWrite), aplikasi akan menggunakan pencerminan database.
Driver akan mengembalikan kesalahan jika pencerminan database digunakan pada database utama di AG, dan jika MultiSubnetFailover=True digunakan dalam string koneksi yang tersambung ke database utama alih-alih ke pendengar grup ketersediaan.
Menentukan niat aplikasi
Ketika ApplicationIntent=ReadOnly, klien meminta beban kerja baca saat menyambungkan ke database yang diaktifkan AlwaysOn. Server akan memberlakukan niat pada waktu koneksi dan selama pernyataan database USE tetapi hanya ke database yang diaktifkan AlwaysOn.
Kata ApplicationIntent kunci tidak berfungsi dengan database lama dan baca-saja.
Database dapat mengizinkan atau melarang beban kerja baca pada database AlwaysOn yang ditargetkan. (Ini dilakukan dengan klausul ALLOW_CONNECTIONS dari PRIMARY_ROLE dan pernyataan SECONDARY_ROLE Transact-SQL.)
Kata ApplicationIntent kunci digunakan untuk mengaktifkan perutean baca-saja.
Perutean baca-saja
Perutean baca-saja adalah fitur yang dapat memastikan ketersediaan replika database baca-saja. Untuk mengaktifkan perutean baca-saja:
Anda harus tersambung ke pendengar grup ketersediaan Grup Ketersediaan AlwaysOn.
Kata
ApplicationIntentkunci string koneksi harus diatur keReadOnly.Grup Ketersediaan harus dikonfigurasi oleh administrator database untuk mengaktifkan perutean baca-saja.
Ada kemungkinan bahwa beberapa koneksi yang menggunakan perutean baca-saja tidak semuanya akan tersambung ke replika baca-saja yang sama. Perubahan sinkronisasi database atau perubahan konfigurasi perutean server dapat mengakibatkan koneksi klien ke replika baca-saja yang berbeda. Untuk memastikan bahwa semua permintaan baca-saja tersambung ke replika baca-saja yang sama, jangan teruskan pendengar grup ketersediaan ke Data Source kata kunci string koneksi. Sebagai gantinya, tentukan nama instans baca-saja.
Perutean baca-saja mungkin memakan waktu lebih lama daripada menyambungkan ke primer karena perutean baca saja terlebih dahulu tersambung ke primer dan kemudian mencari sekunder yang dapat dibaca terbaik yang tersedia. Karena itu, Anda harus meningkatkan batas waktu masuk Anda.