Una spiacevole situazione
Oggi mi sono trovato davanti ad una situazione antipatica. Un SQL Server 2008 R2 installato un po’ allegramente, senza fare attenzione –durante il processo di setup- a quali account/gruppi autorizzare come amministratori del SQL Server.
La modalità di autenticazione era di tipo “mixed”, quindi in grado di autenticare sia account Windows che SQL Server (a partire dal built-in account ‘sa’)… ma ovviamente nessuna si era documentato la password dell’account SQL Server ‘sa’…
Nella pratica non era possibile accedere, attraverso SQL Server Management Studio, all’istanza SQL Server… nessuna attività amministrativa possibile.
Molti sapranno che è del tutto inutile (da SQL server 2008 in avanti) essere Local Administrator del server Windows… non serve neppure essere amministratori dell’universo… non potrete amministrare il vostro SQL Server!
In altri casi ho potuto “aggirare l’ostacolo”, accedendo al server attraverso l’account SQL Server ‘sa’ (in quel caso qualcuno si ricordava la password!), autorizzando di conseguenza gli account o i gruppi amministrativi di Windows. Da lì in avanti anche gli account amministrativi di Windows avevano accesso alla console di amministrazione di SQL Server.
La soluzione
Attenzione, perché la soluzione creerà un temporaneo disservizio.
Dopo aver fatto accesso alla macchina SQL Server in RDP, ovviamente con credenziali amministrative locali, ho stoppato tutti i servizi di SQL Server, agendo attraverso il componente SQL Server Configuration Manager
Quindi ho avviato il servizio dell’istanza SQL Server, tramite i Services di Windows, specificando l’opzione per l’esecuzione in modalità di manutenzione, aggiungendo -m”SQLCMD” negli Start parameters. Ricorda di cliccare sul pulsante Start e non OK:
Il servizio SQL Server avviato in questa modalità non consentirà connessioni se non quelle di natura amministrativa.
Aperto un Command Prompt amministrativo, ho utilizzato la console SQLCMD per accreditare il mio account amministrativo Windows all’amministrazione di SQL Server:
C:\>SQLCMD –S <SERVER> -E
1> CREATE LOGIN [Dominio\Account] FROM WINDOWS
2> go
1> exec sp_addsrvrolemember @loginame = N’Dominio\Account’, @rolename = N’sysadmin’;
2> go
Una volta riavviati, in modalità normale, tutti i servizi di SQL Server… con il mio account Windows ho potuto fare accesso al SQL Server con privilegi amministrativi!