Come si reimposta la password sa?


22

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 reimpostare 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?


Ho trovato la risposta Non riesco ad accedere come amministratore di dominio, ma l'utilizzo dell'amministratore locale ha funzionato bene.
Daniel Williams,

Vuoi dire che un membro del gruppo "Amministratori" della macchina locale è stato in grado di farlo? Per i posteri, quali esatti passi hai fatto?
Campbell

L'account era l'account amministratore locale stesso. Questo account fa parte del gruppo Adminsitrators locale, così come il mio account di dominio. Ma solo l'account amministratore locale è stato in grado di utilizzare l'autenticazione di Windows per accedere a SQL Server. Spero che aiuti.
Daniel Williams,

l'avvio dell'istanza in modalità utente singolo consentirà inoltre a qualsiasi account locale che fa parte del gruppo di amministratori locali di accedere all'istanza. Modifica: il link @ user1419 lo sottolinea.
Shawn Melton,

Risposte:


10

È 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 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 account di 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: assicurarsi 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).


9

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

È possibile connettersi utilizzando l' NT AUTHORITY\SYSTEMaccount (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\SYSTEMe 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 modifica il pulsante di opzione se è attualmente impostato solo su Windows:

    inserisci qui la descrizione dell'immagine

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

    inserisci qui la descrizione dell'immagine

  • Aggiungi il tuo login comesysadmin : fai clic con il pulsante destro del mouse su Login, Nuovo accesso ... inserisci il tuo nome di accesso (nel modulo DOMAIN\username), quindi passa alla scheda Ruoli del server e seleziona la sysadmincasella e fai clic su OK:

    inserisci qui la descrizione dell'immagine

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


Per SQL Server 2012 e istanze più recenti

A partire da SQL Server 2012, NT Authority\SYSTEMper impostazione predefinita non sono stati dati i diritti a SQL Server. Quindi un altro modo per farlo in queste versioni più recenti è stato dettagliato da 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.exee modifica il valore di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathpuntare a SQLCMD.exe, che sarà 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 sysadminusando 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 iniziare questo).

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 SQLCMD.exee sostituirla sqlwriter.exe- molto più semplice puntare SQLCMD.exedirettamente il servizio .


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à". Questi sono approcci validi per il recupero dell'accesso a un'istanza di SQL Server di cui si possiede correttamente. 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.


questo metodo mi consentirà di abilitare anche l'account SA? Sono bloccato in una posizione in cui il mio account SA è disabilitato e ho un gruppo AD con il ruolo Pubblico. Inoltre, il tuo metodo elencato, sarò in grado di eseguire questi passaggi senza eliminare l'istanza? Chiedo perché il mio server è in un ambiente di produzione ora.
Sean Perkins,

1
@Sean sì, dovresti essere in grado di riattivare sa e / o creare un altro account di autenticazione SQL o aggiungere il tuo utente AD (non il gruppo!) In modo specifico a un ruolo più elevato. Nessuno di questi richiederà il riavvio di SQL Server (l'unico caso in cui sarebbe necessario cambiare tra l'autenticazione mista e solo Windows).
Aaron Bertrand

Ottengo il seguente errore quando provo il processo che hai delineato. Mi sono assicurato di fare anche uno screenshot degli unici account elencati. C'è stato un cambiamento ad un certo punto in SQL 2012 che non consentirà questo metodo? La mia versione attuale è 11.0.3128 . Inoltre, non importa quale tipo di modifica apporterò, visualizzerò alcune variazioni di un errore indicando che non ho autorizzazioni. Un'ultima cosa, dubito che questo faccia la differenza, ma ho aperto PowerShell con diritti di amministratore, eseguito cmd.exe, quindi psexec -i -s "C: \ ...... smss.exe"! [Errore di creazione dell'account] ( i.stack.imgur.com/ITOja.p
Sean Perkins,

L'immagine allegata non mostra nulla adesso, ma aveva "SA" e "NT AUTHORITY \ SYSTEM" come unici account elencati. Il messaggio di errore che ho ricevuto era "L'utente non dispone dell'autorizzazione per eseguire questa azione. (Microsoft SQL Server, errore: 15247)"
Sean Perkins,

@Sean PowerShell? PSExec non ha nulla a che fare con PowerShell. Sei un amministratore locale sulla macchina? Sei sicuro?
Aaron Bertrand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.