Pencerminan basis data pada 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 ada setiap saat, yang memberikan ketersediaan tinggi dan redundansi data sepenuhnya. 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 di-cache pada 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 ketika aplikasi klien pertama kali terhubung, maka sebuah SqlException akan diangkat.

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

Catatan

Anda harus menentukan secara eksplisit katalog awal atau nama database pada string koneksi untuk skenario pencerminan database. Jika klien menerima informasi failover pada koneksi yang tidak memiliki katalog atau basis data awal yang ditentukan secara eksplisit, informasi failover tidak disimpan di tembolok, dan aplikasi tidak akan melakukan failover jika server utama mengalami kegagalan. 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 tempat sambungan saat ini terhubung dengan menggunakan properti DataSource dari objek SqlConnection. 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, DataSource properti diperbarui untuk mencerminkan nama cermin.

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

Perilaku Pencerminan SqlClient

Klien selalu mencoba tersambung ke server utama saat ini. Jika gagal, sistem akan mencoba mitra failover. 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 koneksi berikutnya dalam AppDomain yang berbeda atau proses yang berbeda. Namun, tersedia untuk koneksi berikutnya dalam AppDomain yang sama. Perhatikan bahwa perangkat atau proses lain yang berjalan di komputer yang sama atau berbeda selalu memiliki kumpulan koneksinya sendiri, dan koneksi tersebut tidak disetel ulang. Dalam hal ini, jika database utama mengalami kegagalan, setiap proses atau AppDomain gagal sekali, dan kolam secara otomatis dibersihkan.

Catatan

Dukungan replikasi di server dikonfigurasi berdasarkan per basis 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 tercermin. 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