Saya mencoba menyiapkan database untuk keperluan pengembangan di SQL Server Developer Edition 12.0.2000.8 lokal saya. Saya memiliki cadangan basis data lengkap dan file cadangan hanya log transaksi terpisah yang dikirim kepada saya melalui jaringan.
Ketika mencoba memulihkan dari cadangan penuh, setelah beberapa waktu (~ 1 jam mungkin, database berukuran ~ 270 GB), saya mendapatkan kesalahan:
System.Data.SqlClient.SqlError: Terjadi kesalahan saat memproses log untuk database 'nama database'. Jika memungkinkan, pulihkan dari cadangan. Jika cadangan tidak tersedia, mungkin perlu untuk membangun kembali log. (Microsoft.SqlServer.SmoExtended)
Setelah ini, db dalam status 'Memulihkan ..'.
Saya ingin menjalankan sesuatu seperti (mendapatkannya dari pertanyaan ini )
ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;
DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
menentangnya, tapi tentu saja saya tidak bisa karena database dalam keadaan 'Memulihkan .. ". Restart proses pemulihan mengarah ke pesan kesalahan yang sama, menjatuhkan dan mengembalikan lagi tidak membantu juga.
Bagaimana cara mendapatkan db dan bekerja? Konsistensi transaksional tidak masalah bagi saya.
Skrip pemulihan SSMS yang dihasilkan secara otomatis:
USE [master]
RESTORE DATABASE [database_name] FROM DISK = N'D:\database_name.bak' WITH FILE = 1,
MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
NOUNLOAD,
STATS = 5
GO
Hasil kueri yang disarankan oleh @Craig Efrein
Log tidak dapat dibangun kembali karena ada transaksi terbuka / pengguna ketika database dimatikan, tidak ada pos pemeriksaan terjadi ke database, atau database hanya baca. Kesalahan ini dapat terjadi jika file log transaksi secara manual dihapus atau hilang karena kegagalan perangkat keras atau lingkungan.
Jawaban:
Dari komentar yang dipindahkan ke obrolan, catatan dari OP ini:
Saya baru saja mencoba melampirkannya melalui GUI. Ketika saya memilih file .mdf, SSMS mengidentifikasi database yang terdiri dari 3 file (data, indeks, log), tetapi entah bagaimana meskipun saya memulihkan DENGAN MOVE, rincian database tentang jalur file mengatakan itu salah! Jadi saya hanya mengarahkan mereka ke file log / data / indeks yang lama dan ... Basis datanya online.
sumber
Ubah ke mode pengguna tunggal dan pulihkan.
contoh:
Pemulihan pertama menggunakan opsi NORECOVERY sehingga pemulihan tambahan dapat dilakukan. Perintah kedua mengembalikan log transaksi dan kemudian membawa database online untuk penggunaan pengguna akhir.
sumber