Bahasa

Pencerminan basis data pada SQL Server

Pencerminan database di SQL Server memungkinkan Anda menyimpan salinan, atau cermin, dari database SQL Server di server siaga. Pencerminan memastikan bahwa dua salinan terpisah dari data yang ada setiap saat, yang memberikan ketersediaan tinggi dan redundansi data sepenuhnya. Setelah Anda mengonfigurasi pencerminan database untuk database SQL Server, Microsoft. Data.SqlClient mendukungnya tanpa kode klien tambahan. Anda juga dapat menentukan server mitra failover di properti ConnectionString.

Urutan peristiwa berikut terjadi ketika objek SqlConnection 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 saat aplikasi klien pertama kali tersambung, penyedia akan melemparkan SqlException.

Saat SqlConnection berhasil dibuka, server mengembalikan nama mitra failover. Nama itu menggantikan nilai dalam 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

Setelah failover, gunakan DataSource properti untuk mengambil nama server yang tersambung. Fragmen kode berikut mengasumsikan bahwa variabel koneksi mereferensikan instans terbuka kelas SqlConnection .

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