Дзеркальне відображення - недоступно мережеву адресу сервера


12

У мене встановлений SQL Server 2008 R2. Він містить три екземпляри.

  1. За замовчуванням (MSSQLServer)
  2. Перша інстанція
  3. Другий екземпляр

Все це увійти як мережевий сервіс ..

Екземпляр за замовчуванням - Основний сервер. Перший екземпляр - Дзеркало, Другий екземпляр - Сервер свідок

Спочатку я взяв резервну копію повного резервного копіювання та транзакційних журналів моєї основної бази даних. Відновлено його до першої інстанції, зберігаючи те саме ім’я бази даних, а стан відновлення - це не відновлення

Нарешті, я запустив дзеркальне відображення, і я отримую два повідомлення про помилки, показані нижче.

введіть тут опис зображення

введіть тут опис зображення

Відповіді:


12

Спробуйте кілька основних тестів на підключення.

  1. Переконайтесь, що 5022, 5023 та 5024 слухають.
  2. Перевірте правильність імені сервера, який ви використовуєте.

З командного рядка:

netstat -an

введіть тут опис зображення

На моєму сервері ви бачите, що 5022 слухає.

Далі переконайтеся, що ви можете підключитися до цих портів через telnet

telnet fully-qualified-server-name 5022

Як це згадується в розділі " Примітка " інтерфейсу інтерфейсу Mirroring Properties, трохи нижче поля свідка, імена серверів повинні бути повністю кваліфікованими tcp адресами.

введіть тут опис зображення

Ви повинні просто побачити чорний екран. У цьому прикладі я вибрав ім'я, яке призвело б до збою з'єднання. Якщо ви бачите "Не вдалося відкрити з'єднання", сервер (и), визначені як дзеркало, головний і свідоць, недоступні або ви не використовуєте правильне ім'я.

Клієнт telnet можна додати в розділі Особливості в Windows 2008.

У Windows 2008, клацнувши правою кнопкою миші на "Комп'ютер", ви побачите повне ім'я комп'ютера. Ви можете мати змогу також відредагувати його з командного рядка. наприклад: 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. Щоб визначити, хто має дозвіл 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

Grantor - це обліковий запис, який призначив дозвіл на з'єднання (CO), Grantee - це рахунок, який має дозвіл на підключення

У командному рядку запустіть ipconfig /allі відзначте, що повертається ім'я хоста.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.