Pencerminan Database di SQL Server

Pencerminan database di SQL Server memungkinkan Anda untuk menyimpan salinan, atau proyeksi, dari database SQL Server pada server siaga. Pencerminan memastikan bahwa dua salinan terpisah dari data yang selalu ada, yang memberikan high availability dan redundansi data yang lengkap. Penyedia .NET Data untuk SQL Server memberikan dukungan implisit untuk pencerminan database, sehingga pengembang tidak perlu mengambil tindakan apa pun atau menulis kode apa pun setelah dikonfigurasi untuk database SQL Server. Selain itu, SqlConnection objek mendukung mode koneksi eksplisit yang memungkinkan tersedianya nama server mitra failover di ConnectionString.

Urutan aktivitas sederhana berikut ini muncul untuk SqlConnection objek yang menargetkan database yang dikonfigurasi untuk pencerminan:

  1. Aplikasi klien berhasil tersambung dengan database utama, dan server mengirimkan kembali nama server mitra, yang kemudian disimpan di tembolok klien.

  2. Jika server yang berisi database utama gagal atau konektivitas terputus, status koneksi dan transaksi hilang. Aplikasi klien mencoba membangun kembali koneksi ke database utama dan gagal.

  3. Aplikasi klien kemudian secara transparan mencoba membuat koneksi ke database cermin pada server mitra. Jika berhasil, koneksi diarahkan ke database cermin, yang kemudian menjadi database utama baru.

Menentukan Mitra Failover dalam String Koneksi

Jika Anda menyertakan nama server mitra failover pada string koneksi, klien akan secara transparan mencoba sambungan dengan mitra failover jika database utama tidak tersedia saat aplikasi klien pertama kali terhubung.

";Failover Partner=PartnerServerName"  

Jika Anda menghilangkan nama server mitra failover dan database utama tidak tersedia saat aplikasi klien pertama kali tersambung, maka sebuah SqlException ditambahkan.

Ketika SqlConnection berhasil dibuka, nama mitra failover dikembalikan oleh server dan menggantikan nilai apa pun yang tertera pada string koneksi.

Catatan

Anda harus secara eksplisit menentukan katalog awal atau nama database pada koneksi string untuk skenario pencerminan database. Jika klien menerima informasi failover pada koneksi yang tidak memiliki katalog atau database awal yang ditentukan secara eksplisit, informasi failover tidak disimpan di tembolok dan aplikasi tidak mengupayakan pemulihan jika server utama gagal. Jika string koneksi memiliki nilai untuk mitra failover, namun tidak ada nilai untuk katalog atau database awal, maka sebuah InvalidArgumentException ditambahkan.

Mengambil Nama Server Saat Ini

Jika terjadi failover, Anda dapat mengambil nama server di mana sambungan saat ini benar-benar terhubung dengan menggunakan DataSource properti SqlConnection objek . Fragmen kode berikut mengambil nama server aktif, dengan asumsi bahwa variabel koneksi mereferensikan SqlConnection terbuka.

Ketika peristiwa failover terjadi dan koneksi dialihkan ke server cermin, properti DataSource diperbarui untuk mencerminkan nama proyeksi.

Dim activeServer As String = connection.DataSource  
string activeServer = connection.DataSource;  

Perilaku Pencerminan SqlClient

Klien selalu mencoba tersambung ke server utama saat ini. Jika gagal, maka mitra failover akan dicoba. Jika database cermin telah dialihkan ke peran utama di server mitra, koneksi berhasil dan pemetaan cermin prinsipal baru dikirim ke klien dan disimpan di tembolok selama masa panggilan AppDomain. Ini tidak disimpan dalam penyimpanan persisten dan tidak tersedia untuk sambungan berikutnya dalam AppDomain atau proses yang berbeda. Namun, tersedia untuk koneksi berikutnya dalam AppDomain yang sama. Perhatikan bahwa AppDomain atau proses lain yang berjalan pada komputer yang sama atau berbeda selalu memiliki kumpulan sambungan, dan sambungan tersebut tidak diatur ulang. Dalam hal ini, jika database utama turun, setiap proses atau AppDomain pernah gagal, dan kumpulan secara otomatis dibersihkan.

Catatan

Pencerminan dukungan pada server dikonfigurasi berdasarkan per database. Jika operasi manipulasi data dijalankan terhadap database lain yang tidak termasuk dalam rangkaian prinsipal /kaca, baik dengan menggunakan nama multipart atau dengan mengubah database saat ini, perubahan pada database lain ini tidak menyebar jika terjadi kegagalan. Tidak ada kesalahan yang dihasilkan ketika data dimodifikasi dalam database yang tidak dicerminkan. Pengembang harus mengevaluasi kemungkinan dampak dari operasi tersebut.

Sumber Daya Pencerminan Database

Untuk dokumentasi konseptual dan informasi tentang konfigurasi, penyebaran dan pengelolaan pencerminan, lihat sumber daya berikut dalam dokumentasi SQL Server.

Sumber daya Deskripsi
Pencerminan Database Menjelaskan cara mengatur dan mengonfigurasi pencerminan di SQL Server.

Lihat juga