มิเรอร์ - ไม่สามารถเข้าถึงที่อยู่เครือข่ายเซิร์ฟเวอร์


12

ฉันติดตั้ง SQL Server 2008 R2 แล้ว มันมีสามกรณี

  1. ค่าเริ่มต้น (MSSQLServer)
  2. อินสแตนซ์แรก
  3. อินสแตนซ์ที่สอง

ทั้งหมดนี้คือการเข้าสู่ระบบในฐานะบริการเครือข่าย ..

ค่าเริ่มต้นอินสแตนซ์คือเซิร์ฟเวอร์หลักอินสแตนซ์แรกคือมิเรอร์ที่สองอินสแตนซ์คือเซิร์ฟเวอร์พยาน

ตอนแรกฉันทำการสำรองข้อมูลทั้งหมดและสำรองข้อมูลธุรกรรมของฐานข้อมูลหลักของฉัน กู้คืนไปยังอินสแตนซ์แรกโดยการรักษาชื่อฐานข้อมูลและสถานะการกู้คืนเดียวกันคือไม่มีการกู้คืน

ในที่สุดฉันเริ่ม Mirroring และฉันได้รับข้อความแสดงข้อผิดพลาดสองข้อความที่แสดงด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


12

ลองทดสอบการเชื่อมต่อพื้นฐาน

  1. ตรวจสอบว่ากำลังฟัง 5022, 5023 และ 5024
  2. ตรวจสอบว่าชื่อเซิร์ฟเวอร์ที่คุณใช้นั้นถูกต้อง

จากบรรทัดคำสั่ง:

netstat -an

ป้อนคำอธิบายรูปภาพที่นี่

บนเซิร์ฟเวอร์ของฉันคุณจะเห็นว่า 5022 กำลังฟังอยู่

ถัดไปตรวจสอบให้แน่ใจว่าคุณสามารถเชื่อมต่อกับพอร์ตเหล่านั้นผ่าน telnet

telnet fully-qualified-server-name 5022

เมื่อกล่าวถึงในส่วนหมายเหตุของ GUI คุณสมบัติการทำมิเรอร์ด้านล่างฟิลด์พยานชื่อเซิร์ฟเวอร์ต้องเป็นที่อยู่ tcp ที่ผ่านการรับรองโดยสมบูรณ์

ป้อนคำอธิบายรูปภาพที่นี่

คุณควรเห็นหน้าจอสีดำ ในตัวอย่างนี้ฉันเลือกชื่อที่จะทำให้การเชื่อมต่อล้มเหลว หากคุณเห็น "ไม่สามารถเปิดการเชื่อมต่อ" แสดงว่าเซิร์ฟเวอร์กำหนดเป็นมิเรอร์ตัวการและพยานไม่สามารถเข้าถึงได้หรือคุณไม่ได้ใช้ชื่อที่ถูกต้อง

ไคลเอ็นต์ telnet สามารถเพิ่มได้ภายใต้คุณสมบัติใน Windows 2008

ใน Windows 2008 เมื่อคุณคลิกขวาที่คอมพิวเตอร์คุณจะเห็นชื่อเต็มของคอมพิวเตอร์ คุณควรจะสามารถ ping ได้เช่นกันจากบรรทัดคำสั่ง เช่น: ping myservername

ปรับปรุง

กรุณาเรียกใช้แบบสอบถามต่อไปนี้ในแต่ละอินสแตนซ์ของ SQL Server และใส่ผลลัพธ์ในคำถามของคุณ เคล็ดลับการแก้ปัญหาเหล่านี้มาจาก: http://msdn.microsoft.com/en-us/library/ms189127.aspx

แสดงจุดปลาย tcp

SELECT type_desc, port FROM sys.tcp_endpoints;

แสดงสถานะของปลายทางการมิรเรอร์

SELECT state_desc FROM sys.database_mirroring_endpoints;

ตรวจสอบว่า ROLE นั้นถูกต้อง

SELECT role FROM sys.database_mirroring_endpoints;

แสดงการอนุญาตไปยังปลายทาง

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

การเข้าสู่ระบบสำหรับบัญชีบริการจากอินสแตนซ์ของเซิร์ฟเวอร์อื่นต้องได้รับอนุญาตจาก CONNECT ตรวจสอบให้แน่ใจว่าการเข้าสู่ระบบจากเซิร์ฟเวอร์อื่นได้รับอนุญาตเชื่อมต่อ เมื่อต้องการกำหนดว่าใครมีสิทธิ์ CONNECT สำหรับปลายทางในแต่ละเซิร์ฟเวอร์อินสแตนซ์ให้ใช้คำสั่ง Transact-SQL ต่อไปนี้

ตัวอย่างผลลัพธ์:

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

ผู้ให้สิทธิ์เป็นบัญชีที่ได้รับอนุญาตในการเชื่อมต่อ (CO) ผู้รับเป็นบัญชีที่มีสิทธิ์ในการเชื่อมต่อ

จากบรรทัดคำสั่งเรียกใช้ipconfig /allและสังเกตสิ่งที่ชื่อโฮสต์กลับมา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.