Estou no processo de criação de um ambiente de TESTE para nossa equipe de desenvolvimento do SQL Server.
Na produção, temos 3 SQL Servers, SQL01
contém vários bancos de dados espelhados SQL02
. SQL03
atua como testemunha em uma "alta segurança com failover automático" ou configuração síncrona.
Usei o VMWare P2V para virtualizar todas as três máquinas em hardware separado, reconfigurando os SIDs das máquinas e perfurando os endereços IP de nossos servidores de produção a partir dessas novas máquinas.
Eu havia me esquecido de perfurar a máquina testemunha de produção, de modo que os bancos de dados nas máquinas TEST ainda estavam usando a SQL03
máquina como testemunha. Percebendo o problema, decidi reconfigurar os bancos de dados no TEST para apontar para a testemunha TEST recentemente virtualizada, chame-o TEST03
.
Para reconfigurar o banco de dados para usar a nova testemunha, digitei o seguinte comando no servidor Principal TEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
A resposta foi inesperada:
The ALTER DATABASE command could not be sent to the remote server instance
'TCP://TEST03.domain.inet:5022'. The database mirroring configuration was
not changed. Verify that the server is connected, and try again.
Fiquei muito perplexo com essa mensagem de erro, pois a configuração funciona nas máquinas de produção e não foi modificada de nenhuma maneira nas máquinas de teste.
Para que isso funcionasse, eu precisava criar uma LOGIN
testemunha no teste:
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
e GRANT
ele CONNECT
direitos sobre o desfecho em questão:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
Consegui apontar com êxito os bancos de dados espelhados no ambiente TEST para a nova testemunha de teste.
Como posso inspecionar o terminal de testemunha de produção para ver qual segurança está associada a ele?
Suponho que deve haver algum catálogo do sistema que eu possa inspecionar, no entanto, o Books-on-Line não parece ter nada específico para os Endpoints, e o Bing está bem, o Bingless ...
Informação adicional:
SELECT ep.endpoint_id, p.class_desc, p.permission_name, ep.name, sp.name
FROM sys.server_permissions p
INNER JOIN sys.endpoints ep ON p.major_id = ep.endpoint_id
INNER JOIN sys.server_principals sp ON p.grantee_principal_id = sp.principal_id
WHERE class = '105';
retorna:
endpoint_id class_desc permission_name endpoint_name principal_name
2 ENDPOINT CONNECT TSQL Local Machine public
3 ENDPOINT CONNECT TSQL Named Pipes public
4 ENDPOINT CONNECT TSQL Default TCP public
5 ENDPOINT CONNECT TSQL Default VIA public
E:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
Devoluções:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
Parece não haver entrada sys.server_permissions
para o objeto do ponto final de espelhamento. Nenhum major_id
e nenhum minor_id
corresponde a 65536. Além disso, nenhum banco de dados do sistema contém qualquer referência ao terminal.
Estou perdida.