MSSQLSERVER_5009

Şunlar için geçerlidir: SQL Server

Details

Attribute Value
Ürün Adı SQL Server
Olay Kimliği 5009
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad ALT_BADDISKS
İleti Metni Açıklamada listelenen bir veya daha fazla dosya bulunamadı veya başlatılamadı

Explanation

Bu hata, DBCC SHRINK* komutunda ALTER DATABASE veya çözülemeyen bir dosya adı veya dosya kimliği belirttiğinizi gösterir.

Aşağıdaki senaryoyu göz önünde bulundurun:

  • Tam veya toplu kayıtlı bir kurtarma modeli kullanan bir Microsoft SQL Server veritabanı'iniz var.
  • Veritabanına db_file1 adlı yeni bir veri dosyası eklersiniz.
  • Dosyanın db_file1 dosya tipini veri olarak ayarlıyorsunuz.
  • Dosya türünü yanlış belirttiğinizi fark ediyorsunuz.
  • Dosyayı db_file1 kaldırıyorsunuz ve ardından bu veritabanı için işlem günlüğünü yedeklersiniz.
  • Aynı veritabanına db_file1 adlı yeni bir günlük dosyası eklersiniz.
  • db_file1 adlı log dosyasını ifadeyi ALTER DATABASE kullanarak veya SQL Server Management Studio kullanarak kaldırmaya çalışırsınız.

Bu senaryoda, aşağıdakine benzer bir hata iletisi alırsınız:

Mesaj 5009, Seviye 16, Durum 9, Satır 1 Açıklamada listelenen bir veya daha fazla dosya bulunamadı veya başlatılamadı.

Olası nedenler

Bu sorun, kaldırmaya çalıştığınız dosyanın mantıksal adı sistem katalog tablolarında benzersiz değilse ortaya çıkar. Örneğin, bu sorun dosya daha önce veritabanında bulunuyorsa ve dosya kaldırıldıysa ortaya çıkar.

Aynı mantıksal isme sahip bir dosyayı kaldırmaya çalıştığınızda, SQL Server bırakılan mantıklı dosyayı kaldırmaya çalışır. Bu hata mesajına yol açıyor.

Kullanıcı eylemi

Bu sorunu aşmak için şu adımları izleyin.

Note

Bu adımlar dosya kimliği değerlerinin yeniden kullanılmasına neden olur.

  1. ALTER DATABASE Bu ifadeyi kullanarak farklı bir isme ve aynı veri türüne sahip yeni bir mantıksal dosya oluşturun. Örneğin, mantıksal dosyayı different_remove_file_name aşağıdaki örnekte olduğu gibi yerine db_file1' olarak adlandırın:

    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)
    

    Note

    Herhangi bir dosya adını veya herhangi bir dosya yolunu kullanabilirsiniz.

  2. Aşağıdaki örnekte olduğu gibi, adımda 1'de oluşturduğunuz mantıksal dosyayı kaldırmak için ALTER DATABASE bu ifadeyi kullanın:

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. Veritabanının işlem günlüğü yedeklerini oluşturun.

  4. db_file1 adlı mantıksal dosyayı tekrar kaldırmayı deneyin.