SQL Server 2012 kann aufgrund eines Anmeldefehlers nicht gestartet werden

76

Ich habe kürzlich Microsoft SQL Server 2012 auf einer neuen Windows 7-Installation installiert, aber wenn ich den Server ausführen möchte, wird folgende Fehlermeldung angezeigt:

Fehler 1069: Der Dienst wurde aufgrund eines Anmeldefehlers nicht gestartet.

Der folgende Benutzer ist zum Starten des Dienstes konfiguriert: NT Service\MSSQL$SQLEXPRESS

Wie kann ich dieses Problem beheben?

xsl
quelle
1
Gibt die Windows-Ereignisanzeige weitere Informationen an?
Acraig5075
1
@ acraig5075: Ja! Es heißt, das Konto verfügt nicht über die Berechtigung "Als Dienst anmelden".
xsl
3
@xsl - Bitte erwägen Sie, die akzeptierte Antwort auf diese Frage gemäß der folgenden Diskussion zu ändern. Der Autor dieser Antwort kann sie dann zurückziehen. Vielen Dank!
Killthrush
Dies kann passieren, wenn Sie den Computer einer Domäne hinzufügen. Die folgende Antwort zum Löschen des Kennworts im Dienst mmc behebt das Problem.
Brain2000
Dies behebt es jedoch nur vorübergehend.
Newclique

Antworten:

213

Die Antwort darauf ist möglicherweise identisch mit dem Problem mit dem vollständigen SQL Server (NTService \ MSSQLSERVER). Hiermit wird das Kennwort zurückgesetzt. Das Ironische ist, dass es kein Passwort gibt.

Schritte sind:

  • Klicken Sie mit der rechten Maustaste auf den Dienst im Dienst-MMC
  • Klicken Sie auf Eigenschaften
  • Klicken Sie auf die Registerkarte Anmelden
  • Die Passwortfelder scheinen Einträge zu enthalten ...
  • Löschen Sie beide Passwortfelder
  • OK klicken"

Dies sollte den Zugriff auf den Dienst erneut gewähren und ihn neu starten. Seltsam?

HINWEIS: Wenn das Problem nach einigen Stunden oder Tagen erneut auftritt, haben Sie wahrscheinlich eine Gruppenrichtlinie, die Ihre Einstellungen überschreibt und die sofort wieder behoben wird.

JLo
quelle
7
Diese Antwort hat bei mir funktioniert. Löschte sie aus - dann sagte der Dienst hatte die entsprechenden Rechte, dann konnten alle abhängigen Dienste starten.
Tresstylez
3
Manchmal muss das richtige Passwort in die Felder eingegeben werden. Zum Beispiel, wenn Sie das Windows-Anmeldekennwort geändert haben.
Yster
7
Warum funktioniert das? Es macht keinen Sinn, dass ich das Recht "Als Dienst anmelden" implizit über Dienste gewähren kann, obwohl die Gruppenrichtlinie es entfernt. Wie kann ich verhindern, dass die Gruppenrichtlinie das Konto beim Neustart beschädigt?
Wrschneider
18

Das ist mir passiert. Durch eine Richtlinie in der Domäne wurden die Rechte des SQL Server-Benutzerkontos "Als Dienst anmelden" entfernt. Sie können dies mit der JLo-Lösung umgehen, gehen jedoch nicht speziell auf das Gruppenrichtlinienproblem ein und werden beim nächsten Aktualisieren der Gruppenrichtlinien auf dem Computer zurückgegeben.

Die spezifische Richtlinie, die das Problem für mich verursachte, war: Unter Computerkonfiguration -> Windows-Einstellungen -> Sicherheitseinstellungen -> Lokale Richtlinien -> Zuweisungen von Benutzerrechten: Melden Sie sich als Dienst an

Sie können sehen, welche Richtlinien auf Ihren Computer angewendet werden, indem Sie den Befehl "rsop" über die Befehlszeile ausführen. Folgen Sie dem Pfad zu der oben aufgeführten Richtlinie, und Sie sehen den aktuellen Wert sowie das Gruppenrichtlinienobjekt, das den Wert festgelegt hat.

Aaron
quelle
Wie behebt man das? Müssen Sie ein Gruppenrichtlinienadministrator sein, um dies zu ändern?
Wrschneider
1
Musste das IT-Team, das die Gruppenrichtlinien verwaltet, dazu bringen, diese zu ändern. Sie können dem Benutzer lokal die Rechte "Als Dienst ausführen" gewähren, diese werden jedoch jedes Mal gelöscht, wenn eine Aktualisierung der Gruppenrichtlinien erfolgt (alle paar Stunden). Wenn etwas funktioniert, bis die Richtlinie behoben werden kann, können Sie eine geplante Aufgabe einrichten, um das Tool "ntrights" auszulösen und die Berechtigung erneut zu erteilen. Dabei wird ein Ereignis als Auslöser verwendet. Das Aktualisierungsereignis für Gruppenrichtlinien lautet "Protokoll:". System / Quelle: Gruppenrichtlinie / Ereignis-ID 1502.
Aaron
11

Während ("Als SYSTEM ausführen") funktioniert, sollten Benutzer darauf hingewiesen werden, dass dies bedeutet, von einem Konto mit Mindestberechtigungen zu einem Konto zu wechseln, das über alle Berechtigungen der Welt verfügt. Dies ist keine empfohlene Vorgehensweise für die Einrichtung oder in Bezug auf die Sicherheit.

Wenn Sie wissen, was Sie tun, und wissen, dass Ihr SQL Server immer in einer isolierten Umgebung ausgeführt wird (dh nicht über Hotel- oder Flughafen-WLAN), ist dies wahrscheinlich in Ordnung. Dies erzeugt jedoch einen sehr realen Angriffsvektor, der einen Computer im geöffneten Zustand vollständig gefährden kann Internet.

Dies scheint ein Fehler von Microsoft zu sein, und die Benutzer sollten sich der Auswirkungen der veröffentlichten Problemumgehung bewusst sein.

Jostein Kjønigsen
quelle
MSSQLServer 2008 verwendete SYSTEM (zumindest in meiner Installation), 2012 jedoch nicht mehr. Ich musste MS SQL Server als SYSTEM ausführen, da sich ein anderer Dienst (der als SYSTEM ausgeführt werden musste) automatisch bei der SQL Server-Instanz anmeldete.
Neil Wightman
3
Richtig, aber leider ist dies keine Antwort. Wie @xsl sagte, ist dies ein Kommentar.
4

Kurze Antwort:
Installieren Sie die Remoteserver-Verwaltungstools auf Ihrem SQL Server (eine optionale Funktion von Windows Server), starten Sie den Server neu, führen Sie den SQL Server-Konfigurationsmanager aus und greifen Sie auf die Diensteinstellungen für jeden Dienst zu, dessen Anmeldekonto mit "NT-Dienst" beginnt. . ", löschen Sie die Kennwortfelder und starten Sie den Dienst neu. Unter dem Deckmantel weist der SQL Server-Konfigurationsmanager diesen virtuellen Konten das Recht "Anmelden als Dienst" zu, und Sie sind auf dem Weg.

tl; dr;

Zwischen den Standardeinstellungen für eine Windows-Domäne und der Standardinstallation von SQL Server 2012 besteht ein Haken.

Wie oben erwähnt, verhindert das standardmäßige Windows-Domänen-Setup in der Tat, dass Sie das "Anmelden als Dienst" direkt über die Gruppenrichtlinienbearbeitung auf dem lokalen Computer definieren (zumindest über die GUI; wenn Sie das Powershell ActiveDirectory-Modul installieren (über den Download der Remoteserver-Verwaltungstools) ) Sie können es durch Skripten tun.

Standardmäßig führt das SQL Server 2012-Setup Dienste in "virtuellen Konten" aus (NT-Dienst \ Präfix, z. B. NT-Dienst \ MSSQLServer). Diese sind wie lokale Computerkonten, keine Domänenkonten, können jedoch nicht angemeldet werden Als Dienstrechte, wenn Ihr Server einer Domäne beigetreten ist. Das SQL Server-Setup versucht, das Recht bei der Installation zuzuweisen, und das SQL Server-Konfigurationsverwaltungstool versucht ebenfalls, das Recht zuzuweisen, wenn Sie das Anmeldekonto ändern.

Und der schöne Haken bei 22 ist: SQL Server-Tools hängen von (einigen Komponenten von) RSAT ab, um die Anmeldung als Dienstrecht zuzuweisen. Wenn RSAT nicht zufällig auf Ihrem Mitgliedsserver installiert ist, versucht SQL Server Config Manager nicht, die Einstellung stillschweigend anzuwenden (trotz aller knalligen Überprüfung vor der Installation), und Sie erhalten Dienste, die nicht gestartet werden.

Der einzige Hinweis auf diese Anforderung, den ich im Schneesturm von SQL Server und Virtual Account doc finden konnte, war folgender: https://msdn.microsoft.com/en-us/library/ms143504.aspx#New_Accounts , Suche nach RSAT .

BobHy
quelle
2

Ich hatte ein ähnliches Problem, das wie folgt behoben wurde:

  1. Klicken Sie in Services.MSC auf die Registerkarte Anmelden und fügen Sie den Benutzer mit den Mindestberechtigungen und dem Kennwort hinzu (für den Dienst, der den Anmeldefehler auslöst).
  2. Durch Starten von SQL Server als Administrator

Wenn der Benutzer ein Domänenbenutzer ist, verwenden Sie den Domänenbenutzernamen und das Kennwort

Gast
quelle
1

Eine Möglichkeit besteht darin, bei der Installation von SQL Server-Datentools Bi, während SQL Server bereits eingerichtet war.

Lösung: - 1. Reparieren Sie einfach den SQL Server mit der eingerichteten Instanz

Wenn die Lösung nicht funktioniert, lohnt es sich, sich in services.msc einzumischen

Gast
quelle