Bagikan melalui


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.

  1. 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-alih db_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.

  2. 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]
    
  3. Buat cadangan log transaksi database.

  4. Coba hapus file logis yang diberi nama db_file1 lagi.