So löschen Sie einen Fehler 15404 nach einem Neustart der Datenbank (neben einem Neustart)

9

Von Zeit zu Zeit (z. B. ~ Monate) meldet ein stündlicher SQL Server-Agent-Job einen Fehler 15404 und setzt dies fort, bis er eingreift.

[298] SQLServer-Fehler: 15404, Informationen zur Windows NT-Gruppe / zum Windows NT-Benutzer 'DOMAIN_NAME \ SomeDomainAccount', Fehlercode 0x6e, konnten nicht abgerufen werden. [SQLSTATE 42000] (ConnIsLoginSysAdmin)

Manchmal tritt der erste Fehler unmittelbar nach einem manuellen Neustart der SQL Server Engine- und SQL Server Agent-Dienste auf. Das Problem kann durch einen Neustart des Computers behoben werden.

Der Jobbesitzer ist der in der Fehlermeldung aufgeführte Name und ein SQL Server-Administrator.

Das SQL Server Engine-Dienstkonto scheint ein Dienstkonto zu sein (ich glaube, es ist das Standardinstallationskonto (eine Stufe besser als der generische NetworkService, um Interferenzen zwischen Engine- / Agent-Instanzen zu verhindern):

   NT Service\MSSQL$INSTNAME

Es wäre eine Sache, wenn der Job immer fehlschlagen würde, aber da der Job nach einem Neustart erfolgreich ist, denke ich, dass ein Dienstkonto wie funktionieren soll und dass es ein A / D-Timing-Problem oder möglicherweise einen Fehler gibt. Wenn die IT nach der A / D-Konfiguration gefragt wird, lautet die Antwort normalerweise "nichts hat sich geändert".

  • Ein Neustart der Engine und der Agentendienste kann dazu führen, dass der Job fehlschlägt.
  • Ein Neustart des Computers behebt das Problem.
  • Ein sofortiger nachfolgender Neustart der Engine und des Agenten führt nicht mehr zum Fehlschlagen des Jobs.

Link: So beheben Sie einen SQL Server 8198-Fehler

crokusek
quelle
Update, das ist seit dem Post noch zweimal passiert.
Crokusek
Möglicherweise verwandt, haben wir auch ein intermittierendes (wöchentliches) SSPI-Problem auf zwei verschiedenen Servern nicht erzeugen können .
Crokusek
Ich füge nur hinzu, dass ich diesen Fehler zufällig von einem SQL-Skript erhalten habe, das gestern funktioniert hat. Keine Änderungen am Skript, genau derselbe Computer, keine offensichtlichen Fehler in den Windows-Protokollen. Die fehlerhafte SQL-Zeile war eine CREATE ASSEMBLY-Anweisung, AUTHORIZATION [dbo], PERMISSION_SET = EXTERNAL_ACCESS;
Redcalx
Mehr Info. Durch einen Neustart von SQL Server wurde das Problem nicht behoben, durch einen Neustart des Computers jedoch. Möglicherweise hätte es ein Abmelden / Anmelden getan, da ich vermute, dass es sich um ein subtiles Problem in meinem Domain-Konto handelt. Beachten Sie, dass ich mein Passwort in letzter Zeit nicht geändert habe.
Redcalx

Antworten:

4

Keine Lösung, aber Sie können das Problem umgehen, indem Sie den Jobbesitzer zu einem SQL-Konto machen.

Bei jedem Start eines Jobs überprüft SQL Server die Identität des Jobbesitzers und überprüft, ob er über die Berechtigung zum Ausführen des Jobs verfügt. Wenn der Eigentümer ein Windows-Konto ist, muss die Engine Active Directory abfragen. Wenn dies aus irgendeinem Grund fehlschlägt, wird der Job nicht ausgeführt. Dies kann daran liegen, dass der AD-Server ausgelastet, ausgefallen oder vom Netzwerk getrennt ist oder dass das SQL Server-Dienstkonto keine Rechte hat.

Da es unmittelbar nach dem Neustart funktioniert, denke ich, dass es möglicherweise etwas mit zwischengespeicherten Anmeldeinformationen zu tun hat. Windows speichert die Anmeldeinformationen, die für die spätere Verwendung gesucht werden. Dieser Cache wird beim Neustart gelöscht. Vielleicht beschädigt etwas den Cache.

SQL Nerd
quelle
Ich glaube, Sie haben Recht, es handelt sich um zwischengespeicherte Anmeldeinformationen. Durch einen Neustart wird eine Anmeldung beim Active Directory-Server erzwungen. Ich erhalte diesen Fehler in DB-Diagrammen. Wenn ich vom Unternehmensnetzwerk getrennt bin, stelle ich eine Verbindung her und es tritt kein Fehler auf. Trennen Sie die Verbindung und meine Erlaubnis geht verloren. Ich kann abfragen, erstellen usw. - kann einfach kein Diagramm erstellen. 15404 Fehler.
StixO
0

Ich hatte ein Problem mit einer Instanz, die von Domäne A nach Domäne B verschoben wurde, und überprüfte überall die Berechtigungen und gewährte überall die volle Kontrolle. Geändertes Dienstkonto, Jobbesitz, neuer Job erstellt ... Nichts hat funktioniert. Es wurde derselbe Name des Dienstbenutzers B \ sqlservice und A \ sqlservice gefunden, der als Anmeldung auf SQL Server vorhanden war. Nach dem Löschen der A \ sqlservice-Anmeldung funktionierte alles einwandfrei. Dies bedeutet, dass einige Windows-Zeiger falsch waren

Federico
quelle
Zur Verdeutlichung wurde dieser Fehler angezeigt, und der Fehler wurde gemeldet, dass B\sqlservicees sich um das Konto handelte, über das keine Informationen abgerufen werden konnten.
RDFozz