Come recuperare l'utenza SA in SQL Server 

Datamaze
20.07.22 02:32 PM Comment(s)

Come recuperare l'utenza SA in SQL Server in caso di password dimenticata

Che cosa fare nel caso in cui si è dimenticata la password dell’utenza SA e non si hanno altri utenti con diritti di sysadmin con cui accedere all’istanza?

Innanzitutto sangue freddo, nulla è del tutto perduto!

 Sembrerà strano ma ci è capitato più spesso di quello che si possa pensare che un nostro cliente si sia trovato di fronte a questo tipo di problema. Tipicamente succede per vecchie istanze SQL Server poco o per nulla utilizzate, ma su cui un bel giorno si ha la necessità di intervenire per configurare alcuni aspetti dell’istanza. 

I passaggi per recuperare l'utenza SA

Prima di arrivare alla drastica soluzione di reinstallare l’istanza SQL Server e fare l’attach dei singoli database (operazione piuttosto onerosa in termini di tempo), si possono provare questi semplici passaggi:

  • Riavviare l’istanza SQL Server in “single user mode” e aggiungere il parametro -m o in alternativa il parametro -f tra i parametri di startup dell’istanza. Per fare ciò aprire SQL Server Configuration Manager, selezionare il servizio SQL Server interessato.
Come recuperare SA

Tasto destro sul nome dell’istanza, Proprietà e selezionare il tab Startup Parameters.

Recuperare SA in SQL Server

    Inserire il parametro desiderato e cliccare su Add per aggiungere il parametro. Successivamente cliccare su Apply. E’ necessario in     ogni caso eseguire un riavvio dell’istanza SQL Server per poter rendere operativo lo stato di “single user mode”.

 

Tips: nel momento in cui si riavvia l’istanza SQL Server in “single user mode”, il primo client con i diritti sufficienti che si collega all’istanza conquista la connessione impedendo l’accesso ad altri client. Può succedere infatti che se noi tentiamo di collegarci all’istanza dopo averla messa in “single user mode” riceviamo un messaggio di questo tipo:

Recupero SA SQL Server

Per evitare tale inconveniente, il mio consiglio è di utilizzare il parametro

-mSQLCMD 

MSSQLServer Properties

In questo modo stiamo indicando a SQL Server di partire in “single user mode” riservando accesso solo a client di tipo sqlcmd (client che ci servirà tra poco per poter fare le operazioni successive)

 

  • Una volta riavviata in modo corretto l’istanza SQL Server in “single user mode”, solo un utente che è amministratore locale della macchina o appartiene al gruppo degli amministratori locali ha la possibilità di collegarsi all’istanza SQL Server.
  • Aprire quindi una shell dei comandi cmd con diritti di amministratore e provare a collegarsi all’istanza con il seguente comando:

  Sqlcmd -Slocalhost

Slocalhost

    (sostituire a localhost eventuale nome dell’istanza da raggiungere.)

 

    Se la connessione è andata a buon fine si arriva al prompt dei comandi sqlcmd

     1>

 

  • Adesso andremo a creare una nuova utenza NewSA tale da permetterci di accedere nuovamente all’istanza SQL Server con diritti di sysadmin per successive operazioni (sbloccare vecchia utenza sa, reset e cambio password vecchia utenza sa, etc etc).

    Eseguire i seguenti comandi:

  CREATE LOGIN NewSA WITH PASSWORD = 'Password1234';

    Premere Invio

 

  ALTER SERVER ROLE sysadmin ADD MEMBER NewSA

    Premere Invio

 

  GO

    Premere Invio

 

  Exit

    Premere Invio

 

    A questo punto abbiamo creato una nuova utenza NewSA con diritti di sysadmin dell’istanza. 

  • Andiamo a togliere il parametro -m o -f o -mSQLCMD che avevamo aggiunto tramite SQL Server Configuration Manager sulla sezione Startup Parameters. Riavviamo quindi l’istanza.
  • Proviamo la connessione tramite SSMS con la nuova utenza creata:
Connect to Server

E se tutto è andato a buon fine siamo ufficialmente dentro la nostra istanza con utenza di sysadmin!


di Matteo Dal Bianco, pubblicato il 20 luglio 2022