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.
Masalah fisik, sistem operasi, atau SQL Server dapat menyebabkan kegagalan dalam sesi pencerminan database. Pencerminan database tidak secara teratur memeriksa komponen tempat Sqlservr.exe bergantung untuk memverifikasi apakah komponen berfungsi dengan benar atau gagal. Namun, untuk beberapa jenis kegagalan, komponen yang terpengaruh melaporkan kesalahan ke Sqlservr.exe. Kesalahan yang dilaporkan oleh komponen lain disebut kesalahan keras. Untuk mendeteksi kegagalan lain yang mungkin tidak terdeteksi, pencerminan database menerapkan mekanisme batas waktunya sendiri. Ketika batas waktu pencerminan habis, pencerminan database mengasumsikan bahwa kegagalan telah terjadi dan dianggap sebagai kesalahan lunak. Namun, beberapa kegagalan yang terjadi di tingkat instans SQL Server tidak menyebabkan pencerminan kehabisan waktu dan dapat tidak terdeteksi.
Penting
Kegagalan dalam database selain database yang dicerminkan tidak dapat dideteksi dalam sesi pemantulan database. Selain itu, kegagalan disk data tidak mungkin terdeteksi, kecuali jika database perlu dimulai ulang karena kegagalan disk data.
Kecepatan deteksi kesalahan dan, oleh karena itu, waktu reaksi sesi pencerminan terhadap kegagalan, tergantung pada apakah kesalahannya keras atau lunak. Beberapa kesalahan keras, seperti kegagalan jaringan segera dilaporkan. Namun, dalam beberapa kasus, batas waktu khusus komponen dapat menunda pelaporan beberapa kesalahan fatal. Untuk kesalahan lunak, panjang periode waktu habis pencerminan menentukan kecepatan deteksi kesalahan. Secara default, periode ini adalah 10 detik. Ini adalah nilai minimum yang direkomendasikan.
Kegagalan Karena Kesalahan Keras
Kemungkinan penyebab kesalahan keras termasuk (tetapi tidak terbatas pada) kondisi berikut:
Koneksi atau kawat yang rusak
Kartu jaringan yang buruk
Perubahan router
Perubahan pada firewall
Konfigurasi ulang titik akhir
Kehilangan drive tempat log transaksi berada
Sistem operasi atau kegagalan proses
Misalnya, ketika drive log pada database utama menjadi tidak responsif dan gagal, sistem operasi menginformasikan Sqlservr.exe bahwa kesalahan serius telah terjadi.
Beberapa komponen, seperti komponen jaringan dan beberapa subsistem IO, memiliki batas waktunya sendiri untuk menentukan kegagalan. Waktu habis seperti itu independen dari pencerminan basis data, yang sama sekali tidak mengetahui atau menyadari perilaku mereka. Dalam kasus ini, penundaan batas waktu meningkatkan jeda antara kegagalan dan saat pencerminan database menerima kesalahan keras yang dihasilkan.
Nota
Satu-satunya pemeriksaan kesalahan aktif yang dilakukan untuk pencerminan database terjadi untuk kasus kesalahan lunak. Untuk informasi selengkapnya, lihat "Kegagalan Karena Kesalahan Lunak," nanti dalam topik ini.
Untuk membantu Anda menginterpretasikan kondisi kesalahan yang terjadi pada jaringan, tanyakan kepada teknisi jaringan pesan kesalahan apa yang dikirim ke port ketika peristiwa berikut terjadi pada koneksi TCP:
DNS tidak berfungsi.
Kabel dilepas.
Microsoft Windows memiliki firewall yang memblokir port tertentu.
Aplikasi yang memantau port gagal.
Server berbasis Windows diganti namanya.
Server berbasis Windows di-boot ulang.
Nota
Pencerminan tidak melindungi dari masalah khusus untuk klien yang mengakses server. Misalnya, pertimbangkan kasus di mana adaptor jaringan publik menangani koneksi klien ke instans server utama, sementara kartu antarmuka jaringan privat menangani semua lalu lintas pencerminan di antara instans server. Dalam hal ini, kegagalan adaptor jaringan publik akan mencegah klien mengakses database, meskipun database akan tetap direplikasi.
Kegagalan Karena Kesalahan Lunak
Kondisi yang dapat menyebabkan kegagalan pencerminan termasuk (tetapi tidak terbatas pada) hal berikut:
Kesalahan jaringan seperti waktu habis tautan TCP, paket yang dihilangkan atau rusak, atau paket yang berada dalam urutan yang salah.
Sistem operasi, server, atau database yang tidak merespons.
Server Windows mengalami waktu habis.
Sumber daya komputasi yang tidak memadai, seperti kelebihan beban CPU atau disk, pengisian log transaksi, atau sistem kehabisan memori atau utas. Dalam kasus ini, Anda harus meningkatkan periode waktu habis, mengurangi beban kerja, atau mengubah perangkat keras untuk menangani beban kerja.
Mekanisme Pencerminan Time-Out
Karena kesalahan lunak tidak dapat dideteksi langsung oleh instans server, kesalahan lunak berpotensi menyebabkan instans server menunggu tanpa batas waktu. Untuk mencegah hal ini, pencerminan database menerapkan mekanisme timeout miliknya sendiri, berdasarkan setiap instans server dalam sesi pencerminan yang mengirimkan ping pada setiap koneksi terbuka dengan interval yang tetap.
Untuk menjaga koneksi tetap terbuka, instans server harus menerima ping pada koneksi tersebut dalam periode waktu habis yang ditentukan, ditambah waktu yang diperlukan untuk mengirim satu ping lagi. Menerima ping selama periode tenggang waktu menunjukkan bahwa koneksi masih terbuka dan bahwa instans server berkomunikasi melaluinya. Saat menerima ping, instans server mengatur ulang penghitung waktu habis pada koneksi tersebut.
Jika tidak ada ping yang diterima pada koneksi selama periode waktu habis, instans server menganggap koneksi telah kehabisan waktu. Instans server menutup koneksi kehabisan waktu dan menangani peristiwa waktu habis sesuai dengan status dan mode operasi sesi.
Bahkan jika server lain sebenarnya berfungsi dengan benar, time-out dianggap sebagai kegagalan. Jika batas waktu untuk sebuah sesi terlalu singkat untuk respons biasa dari salah satu mitra, kegagalan sementara dapat terjadi. Kegagalan palsu terjadi ketika satu instans server berhasil menghubungi instans server lain yang waktu responsnya sangat lambat sehingga ping-nya tidak diterima sebelum periode waktu habis berakhir.
Dalam sesi mode performa tinggi, batas waktu selalu 10 detik. Ini umumnya cukup untuk menghindari kegagalan palsu. Dalam sesi mode keamanan tinggi, periode waktu habis default adalah 10 detik, tetapi Anda dapat mengubah durasi. Untuk menghindari kegagalan palsu, sebaiknya periode waktu habis pencerminan selalu 10 detik atau lebih.
Untuk mengubah nilai waktu habis (hanya mode keamanan tinggi)
- Gunakan pernyataan ALTER DATABASE <database> SET PARTNER TIMEOUT <integer>.
Untuk melihat nilai batas waktu saat ini
- Kueri mirroring_connection_timeout yang ada di sys.database_mirroring.
Menanggapi Kesalahan
Terlepas dari jenis kesalahan, instans server yang mendeteksi kesalahan merespons dengan tepat berdasarkan peran instans, mode operasi sesi, dan status koneksi lain dalam sesi. Untuk informasi tentang apa yang terjadi pada hilangnya mitra, lihat Mode Operasi Pencerminan Database.
Lihat Juga
Memperkirakan Gangguan Layanan Selama Pengalihan Peran (Pencerminan Database)
Mode Operasi Pencerminan Database
Pengalihan Peran Selama Sesi Pencerminan Database (SQL Server)
Mirroring Database (SQL Server)