Localização tempdb quebrada e não pode se recuperar


8

Cometeu um erro e digitou incorretamente um comando alter database para tempdb.

Agora a instância não será iniciada. Não consigo iniciar no modo de usuário único usando -m, pois afirma que o tempdb não foi encontrado. Eu tentei usar:

net start msqsqlserver /f /t3608

Mas não consigo realmente conectar-me à instância usando um sqlcmdou outro ssms.


O que o log de erros do SQL Server diz?
Max Vernon

Que mudança você fez?
Max Vernon

Respostas:


12

Inicie o SQL Server como um aplicativo, não um serviço, no modo de configuração mínima e apenas recuperando o mestre, em um prompt de comando:

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

(Adicione -s InstanceNamese esta for uma instância nomeada.)

Agora, em um prompt de comandos diferente, conecte-se usando SQLCMD:

sqlcmd -S InstanceName -E

E emita uma correção (verifique isso !!!) e desligue o aplicativo:

> ALTER DATABASE tempdb MODIFY FILE ...
> SHUTDOWN WITH NOWAIT;
> GO

Acabei entrando nesse método, embora inicialmente não tenha certeza por que não estava me permitindo conectar. No final, desativei todos os serviços, devolvi a caixa e executei a VM sem uma conexão de rede e ela parecia funcionar. Obrigado pelos ponteiros embora. Espero que isso seja útil para outra pessoa no futuro também!
Tim Alexander

0
  1. Iniciar servidor sql no modo de usuário único - Net Start MSSQLServer / mSQLCMD / f / t3608

  2. Para estar no modo de usuário único sqlcmd -S. –E

  3. Execute os comandos

Alterar arquivo de modificação do tempdb do banco de dados (nome = tempdev, nome do arquivo = 'E: \ SQLDATA \ DEFAULT \ tempdb.mdf')

Alterar o arquivo de modificação do tempdb do banco de dados (nome = templog, nome do arquivo = 'E: \ SQLDATA \ DEFAULT \ Templog.ldf')

  1. Parar servidor sql Parar na rede mssqlserver
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.