Поделиться через


MSSQLSERVER_5009

Область применения: SQL Server

Сведения

Атрибут Значение
Название продукта SQL Server
ИД события 5009
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя ALT_BADDISKS
Текст сообщения Не удалось найти или инициализировать один или несколько файлов, перечисленных в инструкции.

Описание

Эта ошибка указывает на то, что в команде ALTER DATABASE или DBCC SHRINK* указано имя или идентификатор файла, которые не удалось разрешить.

Рассмотрим следующий сценарий:

  • У вас есть база данных Microsoft SQL Server, использующая полную или массовую модель восстановления.
  • В нее добавляется новый файл данных с именем db_file1.
  • Файл db_file1 задается как файл данных.
  • Затем вы понимаете, что тип файла указан неправильно.
  • Вы удаляете файл db_file1, а затем создаете резервную копию журнала транзакций для базы данных.
  • В эту же базу данных добавляется новый файл журнала с именем db_file1.
  • Вы пытаетесь удалить файл журнала с именем db_file1 с помощью инструкции ALTER DATABASE или с помощью SQL Server Management Studio.

В этой ситуации вы получаете сообщение об ошибке, которое имеет следующий вид:

Сообщение 5009, уровень 16, состояние 9, строка 1. Не удалось найти или инициализировать один или несколько файлов, перечисленных в инструкции.

Возможные причины

Эта проблема возникает, если логическое имя файла, который вы пытаетесь удалить, не уникально в таблицах системного каталога. Например, она возникает, если файл существовал ранее в базе данных, а затем был удален.

При попытке удалить файл с тем же логическим именем SQL Server пытается удалить удаленный логический файл. Это приводит к сообщению об ошибке.

Действие пользователя

Чтобы обойти эту проблему, выполните следующие действия.

Примечание.

Они позволяют повторно использовать идентификаторы файлов.

  1. С помощью инструкции ALTER DATABASE создайте логический файл с другим именем и тем же типом данных. Например, присвойте логическому файлу имя different_remove_file_name вместо db_file1, как в следующем примере:

    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)
    

    Примечание.

    Можно использовать любое имя файла или путь к файлу.

  2. С помощью инструкции ALTER DATABASE удалите логический файл, созданный в шаге 1, как в следующем примере:

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. Создайте резервную копию журнала транзакций базы данных.

  4. Попробуйте снова удалить логический файл с именем db_file1.