it-swarm.it

Come aggiungere sysadmin all'utente in SQL Server 2008 quando non esistono account sysadmin

Ho un'istanza di SQL Server 2008 in esecuzione. Sfortunatamente durante il test ho deselezionato i diritti sysadmin per il mio login e ora non riesco a leggerlo (perché non ho i diritti sysadmin).

Non ci sono altri account di amministratore di sistema per l'istanza tranne SA.

Sono stato impostato solo per l'autenticazione di Windows, quindi ho hackerato LoginMode nel registro su 2 in modo da poter accedere come SA utilizzando l'autenticazione Sql. Questo in effetti imposta la modalità di accesso su Misto, tuttavia il = SA è disabilitato per impostazione predefinita e non posso riattivarlo perché non ho i diritti di amministratore di sistema.

Come posso abilitare il SA login in modo da poter accedere e riassegnare il sysadmin al mio account normale? Esiste anche un'impostazione di registro per questo o è memorizzata nel database principale?

25
Mark D Jackson

Anche il tipo di connessione più uber-admin Dedicated Administrator Connection ( DAC ), che può essere utilizzato solo come connessione locale e consente di annullare tutti i tipi del male, richiede ancora le credenziali di accesso. Quindi non penso che ci sia un modo ufficiale per farlo.

Il modo più rapido per resuscitare questo sistema potrebbe essere quello di chiudere SQL Server, copiare i file del database utente in un posto sicuro, disinstallarlo, reinstallarlo (assicurandosi di service pack fino almeno al livello precedente), copiare nuovamente i file e allegarli i database. (Non sono sicuro che sia necessario copiare/copiare, ma solo per sicurezza ...).

Sarà comunque necessario ripristinare manualmente gli oggetti a livello di server (ad es. Accessi)

11

Esiste un backdoor reale in SQL Server che non richiede il riavvio e/o il riavvio di nulla in modalità utente singolo. L'ho fatto su sistemi in cui non avevo accesso ma dovevo controllare le cose.

Scarica gli strumenti PSexec da qui . Posizionalo sul server e quindi in un comando Chiedi di eseguire questo comando: psexec -i -s SSMS.exe o sqlwb.exe

Ciò aprirà SSMS come account di sistema che ha accesso sysadmin all'istanza di SQL Server. Questo viene fatto durante l'installazione di SQL Server, tuttavia ho sentito che non sarà così con SQL 2012.

27
user507

SQL Server 2008 è diverso da SQL Server 2005, in quanto gli amministratori locali non ereditano più il ruolo predefinito del server sysadmin.

Quando viene installato SQL Server 2008, viene richiesto di designare un account da aggiungere al ruolo sysadmin. Se ricevi la confezione dopo l'installazione del software, tuttavia, questo non ti aiuta molto.

Fortunatamente, Microsoft ha conservato la funzionalità 2005 quando SQL Server è in esecuzione in modalità utente singolo. Ecco cosa fai:

  • accedere al server come amministratore locale di Windows
  • fermare il server sql
  • al comando Prompt, nella directory in cui risiede sqlservr.exe, digitare sqlservr.exe -m e premere invio - questo avvierà SQL Server in modalità utente singolo
  • aprire SQL Server EM e aggiungere l'account al ruolo predefinito del server sysadmin
  • arrestare il server sql, riavviare (dalla riga di comando o in SQL Server EM
14
Brian Sullivan

Questa è una grande domanda e qualcuno sarà in questa situazione e ha bisogno di un salvataggio fuori di essa ..

Tutto il credito va a codykonior

Se sei un amministratore di Windows sul server , puoi utilizzare uno script di PowerShell v2 per ottenere l'accesso senza interruzioni e senza rischi noti. Lo fa duplicando il token di accesso del servizio SQL Server anche se è in esecuzione con un account di servizio AD, un account virtuale o protetto con un SID per servizio

Lo script di seguito ripeterà i servizi di SQL Server e ti aggiungerà al ruolo sysadmin ovunque ti manchi:

#GITHUB Link : https://github.com/codykonior/HackSql
$userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

$services = Get-Service | Where { ($_.Name -eq 'MSSQLSERVER' -or $_.Name -like 'MSSQL$*') -and $_.Status -eq "Running" }
foreach ($service in $services) {
    if ($service.Name -eq "MSSQLSERVER") {
        $sqlName = ".\"
    } else {
        $sqlName = ".\$($service.Name.Substring(6))"
    }

    Write-Host "Attempting $sqlName"
    $serviceProcess = Get-WmiObject -Class Win32_Service -Filter "Name = '$($service.Name)'"

    Invoke-TokenManipulation -ProcessId $serviceProcess.ProcessID -ImpersonateUser | Out-Null
    $impersonatedUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    Write-Host "Service $($service.Name) on PID $($serviceProcess.ProcessID) will connect to $sqlName as $impersonatedUser"

    $sqlConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlName;Trusted_Connection=True")
    $sqlConnection.Open()
    $sqlCommand = New-Object System.Data.SqlClient.SqlCommand("If Not Exists (Select Top 1 0 From sys.server_principals Where name = '$userName')
Begin
    Create Login [$userName] From Windows
End

If Not Exists (Select Top 1 0 From master.sys.server_principals sp Join master.sys.server_role_members srp On sp.principal_id = srp.member_principal_id Join master.sys.server_principals spr On srp.role_principal_id = spr.principal_id Where sp.name = '$userName' And spr.name = 'sysadmin')
Begin
    Exec sp_addsrvrolemember '$userName', 'sysadmin'
End", $sqlConnection)
    $sqlCommand.ExecuteNonQuery() | Out-Null
    $sqlConnection.Close()
    Invoke-TokenManipulation -RevToSelf | Out-Null
}
5
Kin Shah

È ancora possibile creare un accesso con accesso 'sysadmin'. Grazie a Principal Data Engineer presso Microsoft (Saleem Hakani) sono stati creati i seguenti suggerimenti e trucchi per SQL Server.

L'ho trovato mentre ero bloccato in uno stato simile quando ho dimenticato la password sa per la mia macchina di prova.

Link: https://blogs.technet.Microsoft.com/sqlman/2011/06/14/tips-tricks-you-have-lost-access-to-sql-server-now-what/ =

Ecco i passaggi che dovrai eseguire:

  1. Avviare l'istanza di SQL Server utilizzando la modalità utente singolo (o una configurazione minima che metterà anche SQL Server in modalità utente singolo)

Dal prompt dei comandi digitare: SQLServr.Exe –m (o SQLServr.exe –f)

Nota: se la cartella Binn non si trova nel tuo percorso ambientale, dovrai accedere alla cartella Binn.

(Di solito la cartella Binn si trova in: C:\Programmi\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)

  1. Una volta che il servizio SQL Server è stato avviato in modalità utente singolo o con una configurazione minima, è ora possibile utilizzare il comando SQLCMD dal comando Prompt per connettersi a SQL Server ed eseguire le seguenti operazioni per ricollegarsi come amministratore sull'istanza di SQL Server.

SQLCMD –S

Ora si accederà a SQL Server come amministratore.

  1. Dopo aver effettuato l'accesso a SQL Server tramite SQLCMD, immettere i seguenti comandi per creare un nuovo account o aggiungere un accesso esistente al ruolo del server SYSADMIN.

Per creare un nuovo accesso e aggiungerlo al ruolo del server SYSADMIN:

1> CREA LOGIN "" con PASSWORD = ""

2> vai

1> SP_ADDSRVROLEMEMBER "", "SYSADMIN"

2> go

Per aggiungere un accesso esistente al ruolo del server SYSADMIN, eseguire quanto segue:

1> SP_ADDSRVROLEMEMBER "", "SYSADMIN"

L'operazione sopra descritta si occuperà di concedere i privilegi SYSADMIN a un accesso esistente o a un nuovo accesso.

  1. Dopo aver eseguito correttamente i passaggi precedenti, il passaggio successivo è arrestare e avviare i servizi di SQL Server utilizzando le normali opzioni di avvio. (Questa volta non avrai bisogno di –f o –m)
2

Puoi fare il prossimo:
1) Crea un account utente di Windows con privilegi di amministratore
2) Accedi a Windows con il nuovo account amministrativo
3) Apri Sql Server Mangement Studio utilizzando l'autenticazione di Windows
4) Ora hai effettuato l'accesso a SQL Server come amministratore di sistema, quindi puoi creare nuovi account o aggiornare l'utente sa

0