blog.atwork.at

news and know-how about microsoft, technology, cloud and more.

SQL Server-Problem mit SP2 Update (sqlagent100_msdb_upgrade.sql encountered error 598)

SQL Server kann viel. So viel, dass manchmal auch Fehler zustande kommen können, wo man zunächst an nichts Böses denkt ... und dann kommt es doch anders.

Bei Web-Hostern äußerst beliebt ist die freie SQL Server Express Edition, die ist gratis, schlank, reicht für Web-Anwendungen meist völlig und ist dennoch ein voller SQL Server: Kurz: Eine ausgezeichnete Plattform zum Betreiben von Webseiten und kleinen Systemen.

Ich habe die Anforderung eine neue Webanwendung mit kleiner SQL Datenbank auf einem Webserver einzurichten. Kein Problem (dachte ich mir), die Webanwendung war sofort am IIS7 Webserver eingetragen, jetzt nur noch die Datenbank restoren...

sql-server-logo-small

So starte ich das SQL Management Studio der SQL Server Express Edition - aber die Anmeldung funktioniert nicht...
Vielleicht ist etwas mit dem Dienst nicht in Ordnung?

Ah, der SQL Dienst läuft gar nicht mehr! (Wie ist denn das passiert?)

Also den SQL Dienst neu starten. Das funktioniert wie gewohnt, ok.
sql-error-service-normal-start

Leider funktioniert die Verbindung zum SQL Dienst immer noch nicht!
Hm, dann verbinden wir uns mal nochmals mit dem SQL Management Studio auf den nun laufenden Datenbank-Dienst. Jetzt kommt die Überraschung:

Login failed ... Reason: Server is in script upgrade mode. Only administrator can connect at this time.

Da stimmt wohl etwas nicht... Auf ins Eventlog. Hier steht schon etwas mehr Information zum Problem mit MSSQL$SQLEXPRESS:

sql-error-eventlog-1

"Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online."

Na toll (Muss ich jetzt wirklich die MASTER Datenbank restoren?).
Und gleich darunter (Ja, weiterlesen hilft... Zwinkerndes Smiley)

sql-error-eventlog-2

"Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 598, state 1, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion."

Aha. Es gibt also ein Problem während eines SQL Server Updates bzw. nach der Installation von SP2 (das auf der Maschine vor ein paar Tagen durchgeführt wurde), die Recherche liefert dazu auch Ergebnisse, hier einige davon:

Die Ursache: Die Installation des SP2 wurde durchgeführt, aber "bestimmte" Scripts konnten nicht vollständig ausgeführt werden. "This issue happens because the SQL Server service was stopped when the SP2 installation was in progress. Service Pack installation completes successfully but certain scripts (most of the times sqlagent100_msdb_upgrade.sql) in the Service Pack will be applied only after the SQL Server service starts the next time."

Also lautet die Empfehlung: Das abgebrochene Script fortsetzen um den SQL Dienst wieder zum Laufen zu bringen. Allerdings steht nicht dabei WIE. Mein SQL Dienst kann zwar starten, aber ich laufe immer wieder in dasselbe Problem, dass ich mich nicht anmelden kann.

Ich erspare Ihnen und mir jetzt meine erfolglosen Recherche-Ergebnisse und Versuche - hier die zusammengefasste, rasche Lösung dazu:

  1. In RegEdit.exe nachsehen, wie die Datenpfade des SQL Servers lauten und zwar im Key
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQLServer
    sql-error-sqlserver-regedit-2 
  2. In meinem Fall lauten die eingetragenen Verzeichnisse D:\SQL\Data und D:\SQL\Log.
  3. Und: Diese Verzeichnisse sind NICHT vorhanden!
    Das abgebrochene Script überprüft anscheinend nicht, ob die Verzeichnisse vorhanden sind und ... bricht ab.
  4. Also nun die beiden Verzeichnisse physisch anlegen:
    sql-error-data-dir 
    (Bzw. Prüfen Sie bitte VOR SP2 Installation, ob die SQL Daten-Verzeichnisse vorhanden sind...)
    Soweit so gut. Jetzt muss nur noch das Script irgendwie fortgesetzt werden. Here´s how:
  5. Nun den SQL Server Dienst (wenn er läuft: stoppen) im Single User Mode wie folgt aus der Console starten:

    CD "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn"
    sqlservr.exe -c -m -s "SQLEXPRESS"


    (Der Instanz-Name heißt standardmäßig SQLExpress. Infos zu den Parametern hier: Starting SQL Server in Single-User Mode)
  6. Nun startet der SQL Server Dienst und das abgebrochene Script läuft durch - ein cleverer Kerl, der SQL Server:
    sql-error-script-continues
  7. Wenn das Script durchgelaufen ist (bei mir etwa 1 Minute), dann meldet der Dienst
    "Recovery is complete. ... No user action is required."
    Nun den Dienst mit STRG+C abbrechen (wie im Screenshot), damit wird auch der SQL Dienst beendet.
  8. Und jetzt wie gewohnt den SQL Dienst neu starten.
    sql-error-service-normal-start 
    Jipee. Der Dienst startet (wie gewohnt im Multi User Mode) und die Anmeldung im SQL Management Studio klappt wieder! Was so ein fehlendes Daten-Verzeichnis in Verbindung mit einem Update-Script bewirken kann...

Bei dieser Gelegenheit ist es vielleicht eine ganz gute Idee, die (System) Datenbanken wieder mal zu sichern bzw. die Backup-Scripts laufen zu lassen - bei SQL Express Edition läuft der SQL Agent ja nicht, das muss man dann per Workaround automatisiert machen - das schreib ich mal in einem eigenen Artikel... Zwinkerndes Smiley.

Ich hoffe, diese step-by-step Anleitung hilft allen DB- und System-Admins, die auch in dieses SP2-Upgrade Problem laufen!

Somit hoffe ich, alle (Datenbank) Systeme laufen brav und ohne Überraschungen über die kommenden Festtage und wir SysAdmins haben geruhsame Feiertage!



Loading