it-swarm.com.de

So fügen Sie dem Benutzer in SQL Server 2008 Sysadmin hinzu, wenn keine Sysadmin-Konten vorhanden sind

Ich habe eine SQL Server 2008-Instanz ausgeführt. Leider habe ich beim Testen die Sysadmin-Rechte für mein Login abgewählt und kann sie jetzt nicht mehr lesen (da ich keine Sysadmin-Rechte habe).

Es gibt keine anderen Sysadmin-Konten für die Instanz außer SA.

Ich wurde nur für die Windows-Authentifizierung eingerichtet, also habe ich den LoginMode in der Registrierung auf 2 gehackt, damit ich mich als SA mit SQL-Authentifizierung anmelden kann. Dadurch wird der Anmeldemodus tatsächlich auf Gemischt gesetzt, jedoch auf = SA Benutzer ist standardmäßig deaktiviert und ich kann es nicht wieder aktivieren, da ich keine Systemadministratorrechte habe.

Wie aktiviere ich die Anmeldung SA), damit ich den Systemadministrator meinem normalen Konto zuweisen kann? Gibt es auch hierfür eine Registrierungseinstellung oder ist sie in der Master-Datenbank gespeichert?

25
Mark D Jackson

Selbst die am häufigsten verwendete Verbindungstypoption für Administratortypen Dedicated Administrator Connection ( DAC ), die nur als lokale Verbindung verwendet werden kann und mit der Sie alle Arten rückgängig machen können des Bösen erfordert immer noch Anmeldeinformationen. Ich glaube also nicht, dass es einen offiziellen Weg gibt, dies zu tun.

Der schnellste Weg, um dieses System wiederzubeleben, besteht darin, SQL Server herunterzufahren, die Benutzerdatenbankdateien an einen sicheren Ort zu kopieren, zu deinstallieren, neu zu installieren (sicherstellen, dass das Service Pack mindestens auf dem Niveau ist, auf dem Sie zuvor waren), die Dateien zurück zu kopieren und anzuhängen die Datenbanken. (Nicht sicher, ob das Aus-/Zurückkopieren erforderlich ist, aber nur um sicher zu gehen ...).

Sie müssen weiterhin Objekte auf Serverebene manuell wiederherstellen (z. B. Anmeldungen).

11

Es gibt eine tatsächliche Hintertür zu SQL Server, für die kein Neustart und/oder Neustart im Einzelbenutzermodus erforderlich ist. Ich habe dies auf Systemen getan, auf denen ich keinen Zugriff hatte, aber Dinge überprüfen musste.

Laden Sie die PSexec-Tools von hier herunter. Stellen Sie dies auf den Server und führen Sie dann in einer Eingabeaufforderung diesen Befehl aus: psexec -i -s SSMS.exe oder sqlwb.exe

Dadurch wird SSMS als Systemkonto geöffnet, das über Systemadministratorzugriff auf die Instanz von SQL Server verfügt. Dies geschieht während der Installation von SQL Server. Ich habe jedoch gehört, dass dies bei SQL 2012 nicht der Fall sein wird.

27
user507

SQL Server 2008 unterscheidet sich von SQL Server 2005 darin, dass lokale Administratoren die feste Serverrolle sysadmin nicht mehr erben.

Wenn SQL Server 2008 installiert ist, werden Sie aufgefordert, ein Konto festzulegen, das der Sysadmin-Rolle hinzugefügt werden soll. Wenn Sie die Box jedoch nach der Installation der Software erhalten, hilft Ihnen dies nicht viel.

Glücklicherweise hat Microsoft die Funktionalität von 2005 beibehalten, wenn SQL Server im Einzelbenutzermodus ausgeführt wird. Folgendes tun Sie:

  • melden Sie sich als lokaler Windows-Administrator beim Server an
  • stoppen Sie den SQL Server
  • geben Sie bei der Eingabeaufforderung in dem Verzeichnis, in dem sich sqlservr.exe befindet, sqlservr.exe -m ein und drücken Sie die Eingabetaste. Dadurch wird SQL Server im Einzelbenutzermodus gestartet
  • öffnen Sie SQL Server EM und fügen Sie Ihr Konto der festen Serverrolle sysadmin hinzu
  • stoppen Sie den SQL Server, starten Sie ihn neu (über die Befehlszeile oder in SQL Server EM
14
Brian Sullivan

Dies ist eine großartige Frage, und jemand wird in dieser Situation sein und eine Rettung brauchen.

Der gesamte Kredit geht an codykonior

Wenn Sie ein Windows-Administrator auf dem Server sind , können Sie ein PowerShell v2-Skript verwenden, um Zugriff ohne Ausfall und ohne bekanntes Risiko zu erhalten. Dazu wird das Anmeldetoken des SQL Server-Dienstes dupliziert, selbst wenn er unter einem AD-Dienstkonto, einem virtuellen Konto oder mit einer SID pro Dienst geschützt ist

Das folgende Skript iteriert die SQL Server-Dienste und fügt Sie der Sysadmin-Rolle hinzu, wo immer Sie fehlen:

#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

Sie können weiterhin ein Login mit 'sysadmin'-Zugriff erstellen. Dank an Principal Data Engineer bei Microsoft (Saleem Hakani) wurden die folgenden SQL Server-Tipps und -Tricks erstellt.

Ich fand dies, während ich in einem ähnlichen Zustand feststeckte, als ich das sa-Passwort für meine Testmaschine vergaß.

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

Hier sind die Schritte, die Sie ausführen müssen:

  1. Starten Sie die SQL Server-Instanz im Einzelbenutzermodus (oder in einer minimalen Konfiguration, die SQL Server auch in den Einzelbenutzermodus versetzt).

Geben Sie im Befehl Eingabeaufforderung Folgendes ein: SQLServr.Exe –m (oder SQLServr.exe –f)

Hinweis: Wenn sich der Binn-Ordner nicht in Ihrem Umgebungspfad befindet, müssen Sie zum Binn-Ordner navigieren.

(Normalerweise befindet sich der Binn-Ordner unter: C:\Programme\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)

  1. Nachdem der SQL Server-Dienst im Einzelbenutzermodus oder mit minimaler Konfiguration gestartet wurde, können Sie jetzt mit dem Befehl SQLCMD über den Befehl Eingabeaufforderung eine Verbindung zu SQL Server herstellen und die folgenden Vorgänge ausführen, um sich wieder als Administrator in einer SQL Server-Instanz hinzuzufügen.

SQLCMD –S

Sie werden jetzt als Administrator bei SQL Server angemeldet.

  1. Wenn Sie mit SQLCMD bei SQL Server angemeldet sind, geben Sie die folgenden Befehle ein, um ein neues Konto zu erstellen oder der SYSADMIN-Serverrolle eine vorhandene Anmeldung hinzuzufügen.

So erstellen Sie eine neue Anmeldung und fügen diese Anmeldung zur SYSADMIN-Serverrolle hinzu:

1> CREATE LOGIN ’’ with PASSWORD = ’’

2> geh

1> SP_ADDSRVROLEMEMBER '', 'SYSADMIN'

2> geh

Führen Sie Folgendes aus, um der SYSADMIN-Serverrolle eine vorhandene Anmeldung hinzuzufügen:

1> SP_ADDSRVROLEMEMBER '', 'SYSADMIN'

Mit dem obigen Vorgang werden SYSADMIN-Berechtigungen für eine vorhandene Anmeldung oder eine neue Anmeldung gewährt.

  1. Sobald die oben genannten Schritte erfolgreich ausgeführt wurden, besteht der nächste Schritt darin, SQL Server-Dienste mithilfe regulärer Startoptionen zu stoppen und zu starten. (Dieses Mal brauchen Sie nicht –f oder –m)
2

Sie können das nächste tun:
1) Erstellen Sie ein Windows-Benutzerkonto mit Administratorrechten
2) Melden Sie sich in Windows mit dem neuen Administratorkonto an
3) Öffnen Sie das SQL Server Management Studio mithilfe der Windows-Authentifizierung
4) Jetzt sind Sie in SQL Server als Systemadministrator angemeldet, sodass Sie neue Konten erstellen oder den Benutzer sa aktualisieren können

0