Experimente alguns testes básicos de conectividade.
- Verifique se 5022, 5023 e 5024 estão ouvindo.
- Verifique se o nome do servidor que você está usando está correto.
Na linha de comando:
netstat -an
No meu servidor, você pode ver que 5022 está ouvindo.
Em seguida, verifique se você pode se conectar a essas portas via telnet
telnet fully-qualified-server-name 5022
Conforme mencionado na seção Nota da GUI de Propriedades de espelhamento, logo abaixo do campo testemunha, os nomes dos servidores precisam ser endereços TCP totalmente qualificados.
Você deve ver apenas uma tela preta. Neste exemplo, escolhi um nome que causaria uma falha na conexão. Se você vir "Não foi possível abrir a conexão", os servidores definidos como espelho, principal e testemunha não poderão ser acessados ou você não está usando o nome correto.
O cliente telnet pode ser adicionado em Recursos no Windows 2008.
No Windows 2008, quando você clica com o botão direito do mouse em Computador, pode ver o nome completo do computador. Você deve poder fazer o ping também na linha de comando. ex: ping myservername
Atualizar
Por favor, execute as seguintes consultas em cada instância do SQL Server e coloque os resultados em sua pergunta. Muitas dessas dicas de solução de problemas vêm de: http://msdn.microsoft.com/en-us/library/ms189127.aspx
Mostrar pontos finais tcp
SELECT type_desc, port FROM sys.tcp_endpoints;
Exibir status dos pontos finais de espelhamento
SELECT state_desc FROM sys.database_mirroring_endpoints;
Verifique se o ROLE está correto
SELECT role FROM sys.database_mirroring_endpoints;
Exibir permissões para terminais
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
O logon para a conta de serviço da outra instância do servidor requer permissão CONNECT. Verifique se o logon do outro servidor tem permissão CONNECT. Para determinar quem tem permissão CONNECT para um terminal, em cada instância do servidor, use a seguinte instrução Transact-SQL.
Exemplo de saída:
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
Concedente é a conta que tem permissão de conexão (CO) atribuída, o beneficiário é a conta que tem permissão de conexão
Na linha de comando, execute ipconfig /all
e observe o nome do host retornado.