Memecahkan Masalah Konfigurasi Pencerminan Database (SQL Server)

Berlaku untuk:SQL Server

Topik ini menyediakan informasi untuk membantu Anda memecahkan masalah dalam menyiapkan sesi pencerminan database.

Catatan

Pastikan Anda memenuhi semua prasyarat untuk pencerminan database.

Masalah Ringkasan
Pesan Kesalahan 1418 Pesan SQL Server ini menunjukkan bahwa alamat jaringan server tidak dapat dijangkau atau tidak ada, dan disarankan agar Anda memverifikasi nama alamat jaringan dan mengeluarkan kembali perintah.
Account Membahas persyaratan untuk mengonfigurasi akun dengan benar di mana SQL Server berjalan.
Titik Akhir Membahas persyaratan untuk mengonfigurasi titik akhir pencerminan database dengan benar dari setiap instans server.
SystemAddress Meringkas alternatif untuk menentukan nama sistem instans server dalam konfigurasi pencerminan database.
Akses jaringan Mendokumentasikan persyaratan bahwa setiap instans server dapat mengakses port instans server atau instans lainnya melalui TCP.
Persiapan database cermin Meringkas persyaratan untuk menyiapkan database cermin untuk memungkinkan pencerminan dimulai.
Operasi buat-file gagal Menjelaskan cara merespons operasi create-file yang gagal.
Mulai mencerminkan dengan Menggunakan Transact-SQL Menjelaskan urutan yang diperlukan untuk pernyataan ALTER DATABASE database_name SET PARTNER ='partner_server'.
Transaksi Lintas Database Failover otomatis dapat menyebabkan penyelesaian transaksi yang diragukan secara otomatis dan mungkin salah. Untuk alasan ini, pencerminan database tidak mendukung transaksi lintas database.

Akun

Akun tempat SQL Server berjalan harus dikonfigurasi dengan benar.

  1. Apakah akun memiliki izin yang benar?

    1. Jika akun berjalan di akun domain yang sama, kemungkinan kesalahan konfigurasi berkurang.

    2. Jika akun berjalan di domain yang berbeda atau bukan akun domain, login satu akun harus dibuat di master di komputer lain, dan login tersebut harus diberikan izin CONNECT pada titik akhir. Untuk informasi selengkapnya, lihat Mengelola Metadata Saat Membuat Database Tersedia di Instans Server Lain (SQL Server). Ini termasuk akun Layanan Jaringan.

  2. Jika SQL Server berjalan sebagai layanan yang menggunakan akun sistem lokal, Anda harus menggunakan sertifikat untuk autentikasi. Untuk informasi selengkapnya, lihat Menggunakan Sertifikat untuk Titik Akhir Pencerminan Database (Transact-SQL).

Titik akhir

Titik akhir harus dikonfigurasi dengan benar.

  1. Pastikan bahwa setiap instans server (server utama, server cermin, dan bukti, jika ada) memiliki titik akhir pencerminan database. Untuk informasi selengkapnya, lihat sys.database_mirroring_endpoints (Transact-SQL) dan, tergantung pada bentuk autentikasi, baik Membuat Titik Akhir Pencerminan Database untuk Autentikasi Windows (Transact-SQL) atau Menggunakan Sertifikat untuk Titik Akhir Pencerminan Database (Transact-SQL).

  2. Periksa apakah nomor port sudah benar.

    Untuk mengidentifikasi port yang saat ini terkait dengan titik akhir pencerminan database instans server, gunakan tampilan katalog sys.database_mirroring_endpoints dan sys.tcp_endpoints .

  3. Untuk masalah penyiapan pencerminan database yang sulit dijelaskan, kami sarankan Anda memeriksa setiap instans server untuk menentukan apakah itu mendengarkan pada port yang benar.

  4. Pastikan titik akhir dimulai (STATE=STARTED). Pada setiap instans server, gunakan pernyataan Transact-SQL berikut.

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    Untuk informasi selengkapnya tentang kolom state_desc , lihat sys.database_mirroring_endpoints (Transact-SQL).

    Untuk memulai titik akhir, gunakan pernyataan Transact-SQL berikut.

    ALTER ENDPOINT Endpoint_Mirroring   
    STATE = STARTED   
    AS TCP (LISTENER_PORT = <port_number>)  
    FOR database_mirroring (ROLE = ALL);  
    GO  
    

    Untuk informasi selengkapnya, lihat ALTER ENDPOINT (Transact-SQL).

  5. Periksa apakah PERAN sudah benar. Pada setiap instans server gunakan pernyataan Transact-SQL berikut.

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

    Untuk informasi selengkapnya, lihat sys.database_mirroring_endpoints (Transact-SQL).

  6. Login untuk akun layanan dari instans server lain memerlukan izin CONNECT. Pastikan bahwa login dari server lain memiliki izin CONNECT. Untuk menentukan siapa yang memiliki izin CONNECT untuk titik akhir, pada setiap instans server gunakan pernyataan Transact-SQL berikut.

    SELECT 'Metadata Check';  
    SELECT EP.name, SP.STATE,   
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))   
          AS GRANTOR,   
       SP.TYPE AS PERMISSION,  
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))   
          AS GRANTEE   
       FROM sys.server_permissions SP , sys.endpoints EP  
       WHERE SP.major_id = EP.endpoint_id  
       ORDER BY Permission,grantor, grantee;   
    GO  
    
    

Alamat Sistem

Untuk nama sistem instans server dalam konfigurasi pencerminan database, Anda dapat menggunakan nama apa pun yang secara tidak ambigu mengidentifikasi sistem. Alamat server dapat berupa nama sistem (jika sistem berada di domain yang sama), nama domain yang sepenuhnya memenuhi syarat, atau alamat IP (sebaiknya, alamat IP statis). Menggunakan nama domain yang sepenuhnya memenuhi syarat dijamin berfungsi. Untuk informasi selengkapnya, lihat Menentukan Alamat Jaringan Server (Pencerminan Database).

Akses Jaringan

Setiap instans server harus dapat mengakses port instans atau instans server lainnya melalui TCP. Ini sangat penting jika instans server berada di domain yang berbeda yang tidak saling percaya (domain yang tidak tepercaya). Ini membatasi banyak komunikasi antara instans server.

Persiapan Database Cermin

Apakah memulai pencerminan untuk pertama kalinya atau memulainya lagi setelah pencerminan dihapus, verifikasi bahwa database cermin disiapkan untuk pencerminan.

Saat Anda membuat database cermin di server cermin, pastikan Anda memulihkan cadangan database utama yang menentukan nama database yang sama DENGAN NORECOVERY. Selain itu, semua cadangan log yang dibuat setelah cadangan tersebut diambil juga harus diterapkan, sekali lagi DENGAN NORECOVERY.

Selain itu, kami menyarankan bahwa, jika memungkinkan, jalur file (termasuk huruf drive) database cermin identik dengan jalur database utama. Jika jalur file harus berbeda, misalnya, jika database utama berada di drive 'F:' tetapi sistem cermin tidak memiliki drive F: , Anda harus menyertakan opsi MOVE dalam pernyataan RESTORE.

Penting

Jika Anda memindahkan file database saat membuat database cermin, Anda mungkin tidak dapat menambahkan file ke database nanti tanpa pencerminan ditangguhkan.

Jika pencerminan database telah dihentikan, semua cadangan log berikutnya yang diambil pada database utama harus diterapkan ke database cermin sebelum pencerminan dapat dimulai ulang.

Untuk informasi selengkapnya, lihat Menyiapkan Database Cermin untuk Pencerminan (SQL Server).

Operasi Buat-File Gagal

Menambahkan file tanpa memengaruhi sesi pencerminan mengharuskan jalur file ada di kedua server. Oleh karena itu, jika Anda memindahkan file database saat membuat database cermin, operasi add-file yang lebih baru mungkin gagal pada database cermin dan menyebabkan pencerminan ditangguhkan.

Untuk memperbaiki masalah:

  1. Pemilik database harus menghapus sesi pencerminan dan memulihkan cadangan lengkap grup file yang berisi file yang ditambahkan.

  2. Pemilik kemudian harus mencadangkan log yang berisi operasi add-file di server utama dan memulihkan cadangan log secara manual pada database cermin menggunakan opsi WITH NORECOVERY dan WITH MOVE. Melakukan ini membuat jalur file yang ditentukan pada server cermin dan memulihkan file baru ke lokasi tersebut.

  3. Untuk menyiapkan database untuk sesi pencerminan baru, pemilik juga harus memulihkan TANPA PEMULIHAN cadangan log lain yang luar biasa dari server utama.

Untuk informasi selengkapnya, lihat Menghapus Pencerminan Database (SQL Server), Menyiapkan Database Cermin untuk Pencerminan (SQL Server), Membuat Sesi Pencerminan Database Menggunakan Autentikasi Windows (Transact-SQL), Menggunakan Sertifikat untuk Titik Akhir Pencerminan Database (Transact-SQL), atau Membuat Sesi Pencerminan Database Menggunakan Autentikasi Windows (SQL Server Management Studio).

Mulai mencerminkan dengan Menggunakan Transact-SQL

Urutan di mana pernyataan ALTER DATABASE database_name SET PARTNER ='partner_server' dikeluarkan sangat penting.

  1. Pernyataan pertama harus dijalankan pada server cermin. Ketika pernyataan ini dikeluarkan, server cermin tidak mencoba menghubungi instans server lain. Sebaliknya, server cermin menginstruksikan databasenya untuk menunggu hingga server cermin dihubungi oleh server utama.

  2. Pernyataan ALTER DATABASE kedua harus dijalankan di server utama. Pernyataan ini menyebabkan server utama mencoba terhubung ke server cermin. Setelah koneksi dibuat, cermin kemudian mencoba menyambungkan ke server utama pada koneksi lain.

Untuk informasi selengkapnya, lihat MENGUBAH DATABASE (Transact-SQL).

Catatan

Untuk informasi tentang menggunakan SQL Server Management Studio untuk mulai mencerminkan, lihat Membuat Sesi Pencerminan Database Menggunakan Autentikasi Windows (SQL Server Management Studio).

Transaksi Lintas Database

Ketika database dicerminkan dalam mode keamanan tinggi dengan failover otomatis, failover otomatis dapat menyebabkan resolusi transaksi yang diragukan secara otomatis dan mungkin salah. Jika failover otomatis terjadi pada salah satu database saat transaksi lintas database sedang dilakukan, inkonsistensi logis dapat terjadi di antara database.

Jenis transaksi lintas database yang dapat dipengaruhi oleh failover otomatis meliputi yang berikut ini:

  • Transaksi yang memperbarui beberapa database dalam instans SQL Server yang sama.

  • Transaksi yang menggunakan Koordinator Transaksi Terdistribusi Microsoft (MS DTC).

Untuk informasi selengkapnya, lihat Transaksi Lintas Database dan Transaksi Terdistribusi untuk Grup Ketersediaan AlwaysOn dan Pencerminan Database (SQL Server).

Lihat Juga

Menyiapkan Pencerminan Database (SQL Server)
Keamanan Transportasi untuk Pencerminan Database dan Grup Ketersediaan AlwaysOn (SQL Server)