Lokasi tempdb rusak dan tidak dapat dipulihkan

8

Membuat kesalahan dan salah ketik perintah database untuk tempdb.

Sekarang instance tidak akan mulai. Saya tidak dapat memulai dalam mode pengguna tunggal menggunakan -m karena menyatakan tempdb tidak dapat ditemukan. Saya mencoba menggunakan:

net start msqsqlserver /f /t3608

Tapi kemudian saya benar-benar tidak dapat terhubung ke instance menggunakan salah satu sqlcmdatau ssms.

Tim Alexander
sumber
Apa yang dicatat oleh log kesalahan server SQL?
Max Vernon
Perubahan apa yang Anda lakukan?
Max Vernon

Jawaban:

12

Mulai SQL Server sebagai aplikasi, bukan layanan, dalam mode konfigurasi minimal, dan hanya memulihkan master, dari prompt perintah:

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

(Tambahkan -s InstanceNamejika ini adalah contoh bernama.)

Sekarang, di prompt perintah yang berbeda, sambungkan menggunakan SQLCMD:

sqlcmd -S InstanceName -E

Dan mengeluarkan koreksi (periksa tiga kali ini !!!), lalu matikan aplikasi:

> ALTER DATABASE tempdb MODIFY FILE ...
> SHUTDOWN WITH NOWAIT;
> GO
Aaron Bertrand
sumber
Saya akhirnya masuk melalui metode ini meskipun saya awalnya tidak yakin mengapa itu tidak membiarkan saya terhubung. Pada akhirnya saya menonaktifkan semua layanan, memantul kotak dan menjalankan VM tanpa koneksi jaringan dan tampaknya berfungsi. Terima kasih untuk petunjuknya. Semoga ini bermanfaat bagi orang lain di masa depan juga!
Tim Alexander
0
  1. Mulai sql server dalam mode pengguna tunggal - Net Start MSSQLServer / mSQLCMD / f / t3608

  2. Berada dalam mode pengguna tunggal sqlcmd -S. –E

  3. Jalankan perintahnya

Mengubah database tempdb memodifikasi file (nama = tempdev, nama file = 'E: \ SQLDATA \ DEFAULT \ tempdb.mdf')

Mengubah database tempdb memodifikasi file (nama = templog, nama file = 'E: \ SQLDATA \ DEFAULT \ Templog.ldf')

  1. Hentikan sql server, Net stop mssqlserver
Sai
sumber