Je suis en train de créer un environnement TEST pour notre équipe de développement SQL Server.
En production, nous avons 3 serveurs SQL, SQL01
contient plusieurs bases de données en miroir SQL02
. SQL03
agit comme témoin dans une configuration "haute sécurité avec basculement automatique" ou synchrone.
J'ai utilisé VMWare P2V pour virtualiser les trois machines sur du matériel séparé, reconfiguré les SID des machines et blackholé les adresses IP de nos serveurs de production à partir de ces nouvelles machines.
J'avais d'abord oublié de trou noir la machine témoin de production, donc les bases de données sur les machines TEST utilisaient toujours la SQL03
machine comme témoin. Notant le problème, j'ai décidé de reconfigurer les bases de données sur TEST pour pointer vers le témoin TEST nouvellement virtualisé, appelez-le TEST03
.
Pour reconfigurer la base de données pour utiliser le nouveau témoin, j'ai entré la commande suivante sur le serveur principal TEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
La réponse était inattendue:
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.
J'étais très perplexe à ce message d'erreur car la configuration fonctionne sur les machines de production et n'a été modifiée en aucune façon sur les machines de test.
Pour que cela fonctionne, je devais créer un LOGIN
témoin sur le test:
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
et GRANT
il CONNECT
droits sur le point final en question:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
J'ai ensuite réussi à pointer avec succès les bases de données en miroir de l'environnement TEST vers le nouveau témoin de test.
Comment puis-je inspecter le point de terminaison témoin de production pour voir quelle sécurité lui est associée?
Je suppose qu'il doit y avoir un catalogue système que je peux inspecter, mais Books-on-Line ne semble rien avoir de spécifique pour Endpoints, et Bing va bien, Bingless ...
Information additionnelle:
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';
Retour:
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
Et:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
Retour:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
Il ne semble pas y avoir d'entrée sys.server_permissions
pour l'objet de point de terminaison en miroir. Non major_id
et aucune minor_id
correspondance 65536. En outre, aucune des bases de données système ne contient de référence au point de terminaison.
Je suis à perte.