Неверное расположение базы данных tempdb, восстановление невозможно


8

Сделал ошибку и неправильно набрал команду alter database для tempdb.

Теперь экземпляр не запустится. Я не могу начать в однопользовательском режиме, используя -m, так как он утверждает, что база данных tempdb не найдена. Я пытался с помощью:

net start msqsqlserver /f /t3608

Но тогда я не могу на самом деле подключиться к экземпляру вообще используя либо sqlcmdили ssms.


Что говорит журнал ошибок сервера SQL?
Макс Вернон

Какие изменения вы сделали?
Макс Вернон

Ответы:


12

Запустите SQL Server как приложение, а не службу, в режиме минимальной конфигурации и только восстанавливая мастер из командной строки:

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

(Добавьте, -s InstanceNameесли это именованный экземпляр.)

Теперь в другой командной строке подключитесь с помощью SQLCMD:

sqlcmd -S InstanceName -E

И введите исправление (проверьте это !!!), затем закройте приложение:

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

Я закончил тем, что вошел через этот метод, хотя я сначала не уверен, почему это не позволяло мне соединяться. В конце концов, я отключил все службы, сбросил флажок и запустил виртуальную машину без сетевого подключения, и это, похоже, заработало. Спасибо за указатели, хотя. Надеюсь, что это будет полезно для кого-то еще в будущем!
Тим Александр

0
  1. Запустите sql сервер в однопользовательском режиме - Net Start MSSQLServer / mSQLCMD / f / t3608

  2. Быть в однопользовательском режиме sqlcmd -S. -E

  3. Запустите команды

Изменить базу данных tempdb изменить файл (name = tempdev, filename = 'E: \ SQLDATA \ DEFAULT \ tempdb.mdf')

Изменить базу данных tempdb изменить файл (name = templog, filename = 'E: \ SQLDATA \ DEFAULT \ Templog.ldf')

  1. Остановить сервер sql Net stop mssqlserver
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.