Ubicación de tempdb rota y no se puede recuperar

8

Cometió un error y escribió mal un comando alter database para tempdb.

Ahora la instancia no comenzará. No puedo comenzar en modo de usuario único usando -m, ya que indica que no se pudo encontrar tempdb. Intenté usar:

net start msqsqlserver /f /t3608

Pero, en realidad, no puedo conectarme a la instancia usando sqlcmdo ssms.

Tim Alexander
fuente
¿Qué dice el registro de errores del servidor SQL?
Max Vernon
¿Qué cambio hiciste?
Max Vernon

Respuestas:

12

Inicie SQL Server como una aplicación, no un servicio, en modo de configuración mínima y solo recuperando el maestro, desde un símbolo del sistema:

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

(Agregue -s InstanceNamesi se trata de una instancia con nombre).

Ahora, en un símbolo del sistema diferente, conéctese usando SQLCMD:

sqlcmd -S InstanceName -E

Y emita una corrección (¡compruebe esto tres veces!), Luego cierre la aplicación:

> ALTER DATABASE tempdb MODIFY FILE ...
> SHUTDOWN WITH NOWAIT;
> GO
Aaron Bertrand
fuente
Terminé entrando a través de este método, aunque inicialmente no estoy seguro de por qué no me dejaba conectar. Al final, deshabilité todos los servicios, reboté la caja y ejecuté la máquina virtual sin conexión de red y parecía funcionar. Sin embargo, gracias por los consejos. ¡Espero que esto también sea útil para alguien más en el futuro!
Tim Alexander
0
  1. Inicie el servidor SQL en modo de usuario único - Net Start MSSQLServer / mSQLCMD / f / t3608

  2. Para estar en modo de usuario único sqlcmd -S. -MI

  3. Ejecuta los comandos

Alterar el archivo de modificación tempdb de la base de datos (nombre = tempdev, nombre de archivo = 'E: \ SQLDATA \ DEFAULT \ tempdb.mdf')

Modificar el archivo de modificación de la base de datos tempdb (nombre = templog, nombre de archivo = 'E: \ SQLDATA \ DEFAULT \ Templog.ldf')

  1. Detener servidor sql Net stop mssqlserver
Sai
fuente