Mirroring - Alamat jaringan server tidak dapat dihubungi

12

Saya sudah menginstal SQL Server 2008 R2. Ini berisi tiga contoh.

  1. Default (MSSQLServer)
  2. Contoh pertama
  3. Instance kedua

Semua ini Masuk sebagai Layanan Jaringan ..

Instance Default adalah server utama. Instance pertama adalah Mirror Second Instance adalah Witness Server

Saya awalnya mengambil Cadangan Penuh dan Cadangan Log Transaksional dari Database Utama saya. Memulihkannya ke Instance Pertama dengan mempertahankan Nama Database dan Status Pemulihan yang sama adalah No-Recovery

Akhirnya, saya memulai Mirroring dan saya mendapatkan dua pesan kesalahan yang ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

pengujian
sumber

Jawaban:

12

Coba beberapa tes konektivitas dasar.

  1. Verifikasi bahwa 5022, 5023 dan 5024 mendengarkan.
  2. Pastikan nama server yang Anda gunakan sudah benar.

Dari baris perintah:

netstat -an

masukkan deskripsi gambar di sini

Di server saya, Anda dapat melihat bahwa 5022 mendengarkan.

Selanjutnya pastikan Anda dapat terhubung ke port-port tersebut melalui telnet

telnet fully-qualified-server-name 5022

Seperti yang disebutkan di bagian Catatan pada Mirroring Properties GUI, tepat di bawah bidang saksi, nama server harus alamat tcp yang sepenuhnya memenuhi syarat.

masukkan deskripsi gambar di sini

Anda seharusnya melihat layar hitam. Dalam contoh ini saya memilih nama yang akan menyebabkan kegagalan koneksi. Jika Anda melihat "Tidak dapat membuka koneksi", maka server yang didefinisikan sebagai cermin, kepala sekolah dan saksi tidak dapat dijangkau atau Anda tidak menggunakan nama yang tepat.

Klien telnet dapat ditambahkan di bawah Fitur di Windows 2008.

Di Windows 2008, ketika Anda mengklik kanan pada Komputer, Anda dapat melihat nama lengkap komputer. Anda harus dapat melakukan ping juga dari baris perintah. mis: ping nama server saya

Memperbarui

Silakan jalankan kueri berikut pada setiap instance SQL Server dan masukkan hasilnya dalam pertanyaan Anda. Banyak dari tips pemecahan masalah ini berasal dari: http://msdn.microsoft.com/en-us/library/ms189127.aspx

Perlihatkan titik akhir tcp

SELECT type_desc, port FROM sys.tcp_endpoints;

Menampilkan status titik akhir mirroring

SELECT state_desc FROM sys.database_mirroring_endpoints;

Pastikan ROLE sudah benar

SELECT role FROM sys.database_mirroring_endpoints;

Tampilkan izin ke titik akhir

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

Login untuk akun layanan dari instance 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 contoh server gunakan pernyataan Transact-SQL berikut.

Contoh output:

name    STATE   GRANTOR PERMISSION  GRANTEE
TSQL Local Machine  G   sqladmin    CO      public
TSQL Named Pipes    G   sqladmin    CO      public
TSQL Default TCP    G   sqladmin    CO      public
TSQL Default VIA    G   sqladmin    CO      public
Mirroring   G   SERVERNAME\Grantor  CO      SERVERNAME\Grantee

Grantor adalah akun yang ditugaskan (CO) menghubungkan izin, Penerima adalah akun yang memiliki izin terhubung

Dari baris perintah jalankan ipconfig /alldan catat apa nama Host kembali.

Craig Efrein
sumber