MSSQLSERVER_5009
Berlaku untuk: SQL Server
Detail
Atribut | Nilai |
---|---|
Nama Produk | SQL Server |
ID Peristiwa | 5009 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | ALT_BADDISKS |
Teks Pesan | Satu atau beberapa file yang tercantum dalam pernyataan tidak dapat ditemukan atau tidak dapat diinisialisasi |
Penjelasan
Kesalahan ini menunjukkan bahwa Anda menentukan nama file atau fileID dalam perintah ALTER DATABASE atau DBCC SHRINK* yang tidak dapat diselesaikan.
Pertimbangkan skenario berikut:
- Anda memiliki database Microsoft SQL Server yang menggunakan model pemulihan penuh atau dicatat massal.
- Anda menambahkan file data baru yang diberi nama db_file1 ke database.
- Anda mengatur jenis file untuk
db_file1
file sebagai data. - Anda menyadari bahwa Anda salah menentukan jenis file.
- Anda menghapus
db_file1
file, lalu mencadangkan log transaksi untuk database ini. - Anda menambahkan file log baru yang diberi nama db_file1 ke database yang sama.
- Anda mencoba menghapus file log yang diberi nama db_file1 dengan menggunakan pernyataan ALTER DATABASE atau dengan menggunakan SQL Server Management Studio.
Dalam skenario ini, Anda menerima pesan kesalahan yang menyerupan berikut ini:
Msg 5009, Level 16, State 9, Line 1 Satu atau beberapa file yang tercantum dalam pernyataan tidak dapat ditemukan atau tidak dapat diinisialisasi.
Kemungkinan penyebab
Masalah ini terjadi jika nama logis file yang Anda coba hapus tidak unik dalam tabel katalog sistem. Misalnya, masalah ini terjadi jika file ada di database sebelumnya, lalu file dihapus.
Ketika Anda mencoba menghapus file yang memiliki nama logis yang sama, SQL Server mencoba menghapus file logis yang dihilangkan. Ini menghasilkan pesan kesalahan.
Tindakan pengguna
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut.
Catatan
Langkah-langkah ini menyebabkan nilai ID file digunakan kembali.
Gunakan pernyataan ALTER DATABASE untuk membuat file logis baru yang memiliki nama yang berbeda dan jenis data yang sama. Misalnya, beri nama file logis sebagai
different_remove_file_name
alih-alihdb_file1
, seperti dalam contoh berikut:ALTER DATABASE [DBNAME] ADD FILE ( NAME = N'different_remove_file_name', FILENAME = N'D:\MSSQL.1\MSSQL\DATA\db_file1.ndf', SIZE = 1MB, MAXSIZE = 1MB)
Catatan
Anda dapat menggunakan nama file atau jalur file apa pun.
Gunakan pernyataan ALTER DATABASE untuk menghapus file logis yang Anda buat di langkah 1, seperti dalam contoh berikut:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
Buat cadangan log transaksi database.
Coba hapus file logis yang diberi nama db_file1 lagi.