Попробуйте некоторые основные тесты подключения.
- Убедитесь, что 5022, 5023 и 5024 слушают.
- Убедитесь, что вы используете правильное имя сервера.
Из командной строки:
netstat -an
На моем сервере видно, что 5022 слушает.
Затем убедитесь, что вы можете подключиться к этим портам через Telnet
telnet fully-qualified-server-name 5022
Как упоминается в разделе « Примечание » графического интерфейса «Свойства зеркала», чуть ниже поля-свидетеля, имена серверов должны быть полностью квалифицированными адресами 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;
Проверьте правильность роли
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
и обратите внимание, что возвращает имя хоста.