Спробуйте кілька основних тестів на підключення.
- Переконайтесь, що 5022, 5023 та 5024 слухають.
- Перевірте правильність імені сервера, який ви використовуєте.
З командного рядка:
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
і відзначте, що повертається ім'я хоста.