Esportare gli accessi SQL Server

Questo documento descrive come esportare gli ID di accesso, gli identificatori di sicurezza (SID) e gli hash delle password di SQL Server da un'istanza Cloud SQL per SQL Server utilizzando la stored procedure sp_help_revlogin.

Quando esegui la migrazione dei database, configuri la sincronizzazione dei database o gestisci le repliche di lettura e le repliche di ripristino di emergenza (RE), devi ricreare gli accessi utente nell'istanza di destinazione con SID e hash delle password corrispondenti. In questo modo, gli utenti del database rimangono mappati ai relativi accessi al server e mantengono le loro autorizzazioni.

Cloud SQL per SQL Server fornisce la stored procedure sp_help_revlogin nel database msdb per generare script Transact-SQL (T-SQL) per ricreare gli accessi utente.

Prima di iniziare

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per configurare i flag di database, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene l'autorizzazione cloudsql.instances.update necessaria per configurare i flag di database.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Autorizzazioni database

Assicurati di avere accesso al ruolo utente SQL Server sqlserver predefinito.

Abilita il flag di database

Per installare la stored procedure sp_help_revlogin nel database msdb, attiva il flag di database cloud sql enable sp_help_revlogin nell'istanza.

ConsoleGoogle Cloud

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai alle istanze Cloud SQL

  2. Fai clic sul nome dell'istanza per aprire la pagina Panoramica.
  3. Fai clic su Modifica.
  4. Nella sezione Personalizza la tua istanza, espandi Flag.
  5. Fai clic su Aggiungi flag.
  6. Seleziona cloud sql enable sp_help_revlogin dall'elenco dei flag disponibili.
  7. Imposta il valore del flag su on.
  8. Fai clic su Salva.

gcloud CLI

Attiva il flag utilizzando gcloud CLI:

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

Sostituisci INSTANCE_NAME con il nome della tua istanza Cloud SQL.

Connettiti utilizzando uno strumento client supportato

La stored procedure sp_help_revlogin genera script CREATE LOGIN utilizzando istruzioni T-SQL PRINT (messaggi informativi) anziché set di risultati tabulari (istruzioni SELECT).

Connettiti all'istanza Cloud SQL utilizzando uno dei seguenti strumenti:

  • SQL Server Management Studio (SSMS): connettiti all'istanza, esegui la procedura e visualizza gli script generati nella scheda Messaggi. In alternativa, premi Ctrl+T per passare alla modalità di output di esecuzione Risultati in testo prima di eseguire la query.
  • Visual Studio Code: connettiti utilizzando l'estensione MSSQL, esegui la procedura e visualizza gli script generati nella scheda Messaggi.
  • Utilità sqlcmd: connettiti all'istanza e genera l'output degli script generati direttamente in un file SQL:

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

    Sostituisci quanto segue:

    • INSTANCE_IP: l'indirizzo IP della tua istanza Cloud SQL.
    • USERNAME: il nome utente del database amministrativo (ad esempio sqlserver).
    • PASSWORD: la password utente del database.

Esporta gli accessi utilizzando sp_help_revlogin

Connettiti al database msdb ed esegui la stored procedure sp_help_revlogin.

  • Per esportare tutti i dati di accesso dei clienti:

    EXEC msdb.dbo.sp_help_revlogin;
    
  • Per esportare un login specifico:

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

    Sostituisci LOGIN_NAME con il nome del login da esportare.

Ricrea gli accessi nell'istanza di destinazione

  1. Copia le istruzioni CREATE LOGIN generate dall'output della query.
  2. Connettiti all'istanza SQL Server di destinazione.
  3. Esegui le istruzioni generate in una finestra di query o utilizzando sqlcmd.

Le istruzioni generate creano gli accessi nell'istanza di destinazione con i SID, i database predefiniti e gli hash delle password originali. Per ulteriori informazioni sulle considerazioni relative al trasferimento degli accessi tra istanze, consulta la documentazione di Microsoft sul trasferimento di accessi e password tra istanze di SQL Server.

Sincronizza gli accessi con le repliche di lettura

Quando Cloud SQL crea una replica di lettura o una replica di ripristino di emergenza (RE), copia gli accessi esistenti dall'istanza principale. Tuttavia, gli accessi creati nell'istanza principale dopo la creazione della replica non vengono replicati automaticamente.

Sebbene i database utente di una replica di lettura siano di sola lettura, puoi connetterti a una replica di lettura ed eseguire le istruzioni CREATE LOGIN generate da sp_help_revlogin nel database master della replica.

Ti consigliamo di esportare regolarmente i nuovi accessi dall'istanza principale e di ricrearli nelle repliche di lettura e di RE. La sincronizzazione delle routine garantisce che gli utenti possano autenticarsi nelle repliche di lettura e che le applicazioni possano riconnettersi immediatamente dopo un cambio, un failover della replica o una promozione della replica.

Limitazioni e accessi esclusi

sp_help_revlogin esclude automaticamente i seguenti tipi di accesso dall'esportazione:

  • Service accountGoogle Cloud e account di gestione interni.
  • Account di sistema SQL Server interni (accessi con prefisso ##).
  • Accessi assegnati al ruolo predefinito del server sysadmin.
  • Accessi assegnati a ruoli server amministrativi limitati.

Disattiva il flag di database

Se non hai più bisogno della stored procedure, imposta il flag su off (o rimuovilo dall'istanza):

ConsoleGoogle Cloud

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai alle istanze Cloud SQL

  2. Fai clic sul nome dell'istanza per aprire la pagina Panoramica.
  3. Fai clic su Modifica.
  4. Nella sezione Personalizza la tua istanza, espandi Flag.
  5. Trova cloud sql enable sp_help_revlogin e impostane il valore su off (o fai clic su Elimina per rimuovere il flag).
  6. Fai clic su Salva.

gcloud CLI

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

Se impostato su off o rimosso, Cloud SQL elimina automaticamente dbo.sp_help_revlogin dal database msdb.

Passaggi successivi