Defekter Tempdb-Speicherort und kann nicht wiederhergestellt werden

8

Fehler gemacht und einen Befehl alter database für tempdb falsch eingegeben.

Jetzt wird die Instanz nicht gestartet. Ich kann nicht im Einzelbenutzermodus mit -m starten, da die Tempdb nicht gefunden werden konnte. Ich habe versucht:

net start msqsqlserver /f /t3608

Aber dann kann ich mit entweder sqlcmdoder überhaupt keine Verbindung zur Instanz herstellen ssms.

Tim Alexander
quelle
Was sagt das SQL Server-Fehlerprotokoll?
Max Vernon
Welche Änderung haben Sie vorgenommen?
Max Vernon

Antworten:

12

Starten Sie SQL Server als Anwendung, nicht als Dienst, im minimalen Konfigurationsmodus und stellen Sie den Master nur über eine Eingabeaufforderung wieder her:

[path to this instance]\BINN\sqlservr.exe -c -f -T3608

(Fügen Sie hinzu, -s InstanceNamewenn dies eine benannte Instanz ist.)

Stellen Sie nun an einer anderen Eingabeaufforderung eine Verbindung mit SQLCMD her:

sqlcmd -S InstanceName -E

Und geben Sie eine Korrektur aus (überprüfen Sie dies dreimal !!!) und fahren Sie die Anwendung herunter:

> ALTER DATABASE tempdb MODIFY FILE ...
> SHUTDOWN WITH NOWAIT;
> GO
Aaron Bertrand
quelle
Am Ende bin ich über diese Methode eingestiegen, obwohl ich mir anfangs nicht sicher bin, warum ich mich nicht verbinden konnte. Am Ende habe ich alle Dienste deaktiviert, die Box zurückgeschickt und die VM ohne Netzwerkverbindung ausgeführt, und es schien zu funktionieren. Vielen Dank für die Hinweise. Hoffe, dass dies auch in Zukunft für jemand anderen nützlich ist!
Tim Alexander
0
  1. Starten Sie den SQL Server im Einzelbenutzermodus - Net Start MSSQLServer / mSQLCMD / f / t3608

  2. Im Einzelbenutzermodus sein sqlcmd -S. –E

  3. Führen Sie die Befehle aus

Datenbank ändern tempdb Datei ändern (Name = tempdev, Dateiname = 'E: \ SQLDATA \ DEFAULT \ tempdb.mdf')

Ändern der Datenbank-Tempdb-Änderungsdatei (Name = Templog, Dateiname = 'E: \ SQLDATA \ DEFAULT \ Templog.ldf')

  1. SQL Server stoppen Net Stop MSSQLServer
Sai
quelle