Esportare gli accessi SQL Server

Questo documento descrive come esportare gli accessi, 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 o configuri la sincronizzazione dei database tra le istanze di SQL Server, 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 proprie 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 degli utenti.

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 disporre dell'accesso al ruolo utente SQL Server sqlserver predefinito.

Attiva 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 Google Cloud console, 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 dell'istanza Cloud SQL.

Connettersi utilizzando uno strumento client supportato

La stored procedure sp_help_revlogin genera output di 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 Control+T per impostare la modalità di output dell'esecuzione su Risultati in formato 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 gli script 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 dell'istanza Cloud SQL.
    • USERNAME: il nome utente del database amministrativo (ad esempio sqlserver).
    • PASSWORD: la password dell'utente del database.

Esportare gli accessi utilizzando sp_help_revlogin

Connettiti al database msdb ed esegui la stored procedure sp_help_revlogin.

  • Per esportare tutti gli accessi dei clienti:

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

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

    Sostituisci LOGIN_NAME con il nome dell'accesso da esportare.

Ricrea gli accessi sull'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 all'istanza di destinazione con i SID originali, i database predefiniti e gli hash delle password. Per ulteriori informazioni sulle considerazioni da fare durante il trasferimento degli accessi tra le istanze, consulta la documentazione di Microsoft su Trasferimento di accessi e password tra istanze di SQL Server.

Limitazioni e accessi esclusi

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

  • Google Cloud service account 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 amministrativi del server con limitazioni.

Disattivare il flag di database

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

ConsoleGoogle Cloud

  1. Nella Google Cloud console, 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 imposta 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