Cómo exportar accesos de SQL Server

En este documento, se describe cómo exportar los inicios de sesión, los identificadores de seguridad (SID) y los hashes de contraseñas de SQL Server desde una instancia de Cloud SQL para SQL Server con el procedimiento almacenado sp_help_revlogin.

Cuando migras bases de datos o configuras la sincronización de bases de datos entre instancias de SQL Server, debes volver a crear los accesos de usuario en la instancia de destino con los SID y los hashes de contraseñas coincidentes. Esto garantiza que los usuarios de la base de datos sigan asignados a sus respectivos accesos al servidor y conserven sus permisos.

Cloud SQL para SQL Server proporciona el procedimiento almacenado sp_help_revlogin en la base de datos msdb para generar secuencias de comandos de Transact-SQL (T-SQL) para volver a crear los accesos de usuarios.

Antes de comenzar

Roles obligatorios

Para obtener el permiso que necesitas para configurar marcas de bases de datos, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso cloudsql.instances.update, que se requiere para configurar marcas de bases de datos.

También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.

Permisos de la base de datos

Asegúrate de tener acceso al rol de usuario predeterminado de sqlserver SQL Server.

Habilita la marca de la base de datos

Para instalar el procedimiento almacenado sp_help_revlogin en la base de datos msdb, habilita la marca de base de datos cloud sql enable sp_help_revlogin en tu instancia.

Consola deGoogle Cloud

  1. En la consola de Google Cloud , ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Haz clic en Editar.
  4. En la sección Personaliza tu instancia, expande Marcas.
  5. Haz clic en Agregar marca.
  6. Selecciona cloud sql enable sp_help_revlogin en la lista de marcas disponibles.
  7. Establece el valor de la marca en on.
  8. Haz clic en Guardar.

gcloud CLI

Habilita la marca con gcloud CLI:

gcloud sql instances patch INSTANCE_NAME \
    --database-flags="cloud sql enable sp_help_revlogin=on"

Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.

Conéctate con una herramienta cliente compatible

El procedimiento almacenado sp_help_revlogin genera secuencias de comandos CREATE LOGIN con instrucciones PRINT de T-SQL (mensajes informativos) en lugar de conjuntos de resultados tabulares (instrucciones SELECT).

Conéctate a tu instancia de Cloud SQL con una de las siguientes herramientas:

  • SQL Server Management Studio (SSMS): Conéctate a la instancia, ejecuta el procedimiento y visualiza los scripts generados en la pestaña Messages. Como alternativa, presiona Control + T para cambiar el modo de resultado de la ejecución a Resultados a texto antes de ejecutar la consulta.
  • Visual Studio Code: Conéctate con la extensión de MSSQL, ejecuta el procedimiento y consulta las secuencias de comandos generadas en la pestaña Messages.
  • Utilidad sqlcmd: Conéctate a la instancia y genera las secuencias de comandos directamente en un archivo SQL:

    sqlcmd -S INSTANCE_IP \
        -U USERNAME \
        -P PASSWORD -d msdb \
        -Q "EXEC dbo.sp_help_revlogin" -o output_logins.sql
    

    Reemplaza lo siguiente:

    • INSTANCE_IP: Es la dirección IP de tu instancia de Cloud SQL.
    • USERNAME: Tu nombre de usuario de la base de datos administrativa (por ejemplo, sqlserver)
    • PASSWORD: La contraseña del usuario de la base de datos.

Exporta accesos con sp_help_revlogin

Conéctate a la base de datos msdb y ejecuta el procedimiento almacenado sp_help_revlogin.

  • Para exportar todos los accesos de los clientes, sigue estos pasos:

    EXEC msdb.dbo.sp_help_revlogin;
    
  • Para exportar un acceso específico, sigue estos pasos:

    EXEC msdb.dbo.sp_help_revlogin
        @login_name = 'LOGIN_NAME';
    

    Reemplaza LOGIN_NAME por el nombre del acceso que deseas exportar.

Vuelve a crear los accesos en la instancia de destino

  1. Copia las instrucciones CREATE LOGIN generadas del resultado de la consulta.
  2. Conéctate a tu instancia de SQL Server de destino.
  3. Ejecuta las instrucciones generadas en una ventana de consulta o con sqlcmd.

Las instrucciones generadas crean los inicios de sesión en la instancia de destino con sus SID originales, bases de datos predeterminadas y hashes de contraseñas. Para obtener más información sobre las consideraciones que se deben tener en cuenta cuando se transfieren inicios de sesión entre instancias, consulta la documentación de Microsoft sobre la transferencia de inicios de sesión y contraseñas entre instancias de SQL Server.

Limitaciones y accesos excluidos

sp_help_revlogin excluye automáticamente los siguientes tipos de accesos del archivo de exportación:

  • Google Cloud cuentas de servicio y cuentas de administración internas
  • Cuentas internas del sistema de SQL Server (accesos con el prefijo ##).
  • Son los inicios de sesión asignados al rol fijo de servidor sysadmin.
  • Son los accesos asignados a roles administrativos restringidos del servidor.

Cómo inhabilitar la marca de la base de datos

Si ya no necesitas el procedimiento almacenado, establece la marca en off (o quita la marca de la instancia):

Consola deGoogle Cloud

  1. En la consola de Google Cloud , ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Haz clic en Editar.
  4. En la sección Personaliza tu instancia, expande Marcas.
  5. Busca cloud sql enable sp_help_revlogin y establece su valor en off (o haz clic en Borrar para quitar la marca).
  6. Haz clic en Guardar.

gcloud CLI

gcloud sql instances patch INSTANCE_NAME \
    --database-flags="cloud sql enable sp_help_revlogin=off"

Cuando se establece en off o se quita, Cloud SQL quita automáticamente dbo.sp_help_revlogin de la base de datos msdb.

¿Qué sigue?