Estoy en el proceso de crear un entorno TEST para nuestro personal de desarrollo de SQL Server.
En producción tenemos 3 servidores SQL, SQL01
contiene varias bases de datos que se reflejan SQL02
. SQL03
actúa como testigo en una "alta seguridad con conmutación por error automática" o configuración sincrónica.
Utilicé VMWare P2V para virtualizar las tres máquinas en hardware separado, reconfiguré los SID de las máquinas y bloqueé las direcciones IP de nuestros servidores de producción desde estas nuevas máquinas.
Inicialmente había olvidado bloquear la máquina testigo de producción, por lo que las bases de datos en las máquinas TEST todavía usaban la SQL03
máquina como testigo. Al notar el problema, decidí reconfigurar las bases de datos en TEST para señalar al testigo de TEST recién virtualizado, llámelo TEST03
.
Para reconfigurar la base de datos para usar el nuevo testigo, ingresé el siguiente comando en el servidor primario TEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
La respuesta fue 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.
Estaba muy perplejo con este mensaje de error ya que la configuración funciona en las máquinas de producción y no se ha modificado de ninguna manera en las máquinas de prueba.
Para que esto funcione, necesitaba crear un LOGIN
testigo de prueba:
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
y GRANT
sus CONNECT
derechos sobre el punto final en cuestión:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
Luego pude apuntar con éxito las bases de datos duplicadas en el entorno TEST al nuevo testigo de prueba.
¿Cómo puedo inspeccionar el punto final de testigo de producción para ver qué seguridad está asociada con él?
Supongo que debe haber algún catálogo de sistema que pueda inspeccionar, sin embargo, Books-on-Line no parece tener nada específico para Endpoints, y Bing está bien, Bingless ...
Información 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';
devoluciones:
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
Y:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
Devoluciones:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
Parece que no hay entrada sys.server_permissions
para el objeto de punto final reflejado. No major_id
y no minor_id
coincide con 65536. Además, ninguna de las bases de datos del sistema contiene ninguna referencia al punto final.
Estoy perdido
fuente
Consulte la documentación de Libros en línea para
sys.database_mirroring_endpoints
Para los permisos de objetos de servidor nos fijamos en el lugar de siempre,
sys.server_permissions
. Como en todos los casos en los que la seguridad de Windows está involucrada, las cosas son más complicadas debido a la pertenencia a grupos de Windows, y también debe considerar la jerarquía de permisos .fuente
sys.server_permissions
. Como en todos los casos en los que la seguridad de Windows está involucrada, las cosas son más complicadas debido a la pertenencia a grupos de Windows, y también debe considerar la jerarquía de permisos .