it-swarm.it

Come si reimposta la password sa?

Ho perso la password sa su una macchina e quando accedo alla macchina direttamente utilizzando un account nel gruppo admin, SQL Server Management Studio non mi consente di accedere utilizzando l'autenticazione di Windows.

Il mio piano era semplicemente quello di accedere al server, connettersi tramite l'autenticazione di Windows e ripristinare sa per utilizzare una nuova password. Dal momento che non riesco a connettermi tramite l'autenticazione di Windows, questo non funzionerà.

In quale altro modo è possibile ripristinare la password sa?

22
Daniel Williams

È possibile seguire i passaggi indicati nel collegamento seguente per reimpostare la password SA:

Passaggi riepilogati di seguito:

  1. Apri Gestione configurazione SQL Server dal menu Start> Programmi> Microsoft SQL Server 20xx> Strumenti di configurazione> rilevante per la versione più recente di SQL Server che hai installato (ad esempio se hai installato 2005 e 2012, utilizza la versione 2012). Non hai un menu di avvio? Nella schermata Start di Windows 8, inizia a digitare Con SQL Server ... fino a quando non viene visualizzato.
  2. Arrestare l'istanza di SQL Server che è necessario ripristinare facendo clic con il pulsante destro del mouse sull'istanza in SQL Server Services e selezionando "Stop"
  3. Fai clic con il pulsante destro del mouse sull'istanza che hai appena interrotto, fai clic su Proprietà e nella scheda "Avanzate", nella casella di testo Proprietà aggiungi "; –m" alla fine dell'elenco nell'opzione "Parametri di avvio" (nelle versioni più recenti, può andare direttamente alla scheda "Parametri di avvio", digitare "-m" e fare clic su Aggiungi, senza preoccuparsi della sintassi, dei punti e virgola o altro).
  4. Fare clic sul pulsante "OK" e riavviare l'istanza di SQL Server
  5. Dopo l'avvio dell'istanza di SQL Server in modalità utente singolo, l'account dell'amministratore di Windows è in grado di connettersi a SQL Server utilizzando l'utilità sqlcmd utilizzando l'autenticazione di Windows. È possibile utilizzare i comandi Transact-SQL come "sp_addsrvrolemember" per aggiungere un accesso esistente (o uno appena creato) al ruolo del server sysadmin.

L'esempio seguente aggiunge l'account "Buck" nel dominio "CONTOSO" al ruolo sysadmin:

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

Una volta ripristinato l'accesso sysadmin, rimuovere "; -m" dai parametri di avvio utilizzando Configuration Manager e riavviare l'istanza di SQL Server ancora una volta.

NOTA: assicurati che non ci sia spazio tra “;” e “-m”, il parser dei parametri di registro è sensibile a tali errori di battitura. Dovresti visualizzare una voce nel file ERRORLOG di SQL Server che dice "SQL Server avviato in modalità utente singolo".


Risorse addizionali:

In definitiva, è sempre possibile copiare i file del database in un'altra istanza o persino reinstallare SQL Server (aggiungendo un account locale come amministratore di sistema durante tale processo).

10

Quello che farai dipenderà dalla tua versione di SQL Server, oltre che dalla possibilità di permetterti di disattivare il servizio SQL Server per stabilire nuove credenziali. I primi due metodi qui non richiedono il riavvio dell'istanza:


Per istanze di SQL Server 2005, 2008 e 2008 R2

Puoi connetterti usando l'account NT AUTHORITY\SYSTEM (O altri metodi backdoor). Ci sono alcuni dettagli in alcune delle risposte qui:

Ho anche un suggerimento su MSSQLTips.com che risolve questo problema:

In sostanza, scarichi PSExec da Microsoft, quindi lo usi per avviare Management Studio dopo averlo installato:

PsExec -s -i "C:\...\Ssms.exe"

Questo si connetterà come NT AUTHORITY\SYSTEM E ti permetterà di fare cose in Esplora oggetti, come:

  • Cambia l'istanza in SQL Server e la modalità di autenticazione di Windows - fai clic con il pulsante destro del mouse sul nome del server, premi proprietà e cambia il pulsante di opzione se è attualmente impostato su Windows solo:

    enter image description here

  • Imposta la password per l'account sa - espandi Sicurezza, espandi Login, fai clic con il pulsante destro del mouse su sa e premi Proprietà, e nella finestra di dialogo risultante ci saranno due campi per l'immissione della password:

    enter image description here

  • Aggiungi il tuo login come sysadmin - fai clic con il pulsante destro del mouse su Login, Nuovo accesso ... inserisci il tuo nome di accesso (nel modulo DOMAIN\username) Quindi passare alla scheda Ruoli del server e selezionare la casella sysadmin e fare clic su OK:

    enter image description here

  • (oppure, se il tuo accesso è già elencato, fai clic con il pulsante destro del mouse, Proprietà e assicurati che sysadmin sia selezionato in Ruoli server)


Per SQL Server 2012 e istanze più recenti

A partire da SQL Server 2012, NT Authority\SYSTEM Non ha più i diritti su SQL Server per impostazione predefinita. Quindi un altro modo per farlo in queste nuove versioni è stato dettagliato di Argenis Fernandez :

  1. Se il servizio SQL VSS Writer è in esecuzione, interromperlo e sospendere tutti i piani di manutenzione o software di backup di terze parti che potrebbero fare affidamento su di esso.
  2. Apri regedit.exe E modifica il valore di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath Per puntare a SQLCMD.exe, Che sarà in C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. Dopo la modifica, il valore del registro dovrebbe essere simile al seguente (scusate lo scorrimento):

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
    
  3. Prova a riavviare il servizio SQL VSS Writer (visualizzerai un errore; va bene).

  4. Ora dovresti essere in grado di connetterti come sysadmin usando YourDomain\YourUserName. Quindi interrompere il servizio SQL VSS Writer, correggere il registro e riavviare il servizio (se è necessario che sia in esecuzione o se era in esecuzione prima di avviarlo).

Ho esaminato questo aspetto in modo molto più dettagliato in un secondo suggerimento:

Anche se quando ho scritto quel suggerimento ho usato un approccio più ingombrante per fare una copia di SQLCMD.exe E sostituire sqlwriter.exe - molto più semplice puntare direttamente il servizio su SQLCMD.exe.


Se puoi permetterti di disattivare il servizio SQL Server

Esiste un percorso ufficialmente supportato da Microsoft che richiede il riavvio dell'istanza in modalità utente singolo:

Esiste anche una funzione in dbatools.io , una soluzione Powershell per la gestione di SQL Server, chiamata Reset-DbaAdmin:


La sicurezza non è il problema principale qui

Vedo molte persone che chiedono a Microsoft di "correggere" queste cosiddette "vulnerabilità". Si tratta di approcci validi per il recupero dell'accesso a un'istanza di SQL Server di proprietà dell'utente. Richiedono tutti privilegi elevati sull'host fisico in cui risiede SQL Server; come ho detto a diverse persone, se non si desidera che gli sviluppatori facciano casino con le installazioni di SQL Server, non renderli amministratori.

9
Aaron Bertrand