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 пытается удалить удаленный логический файл. Это приводит к сообщению об ошибке.
Действие пользователя
Чтобы обойти эту проблему, выполните следующие действия.
Примечание.
Они позволяют повторно использовать идентификаторы файлов.
С помощью инструкции 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)
Примечание.
Можно использовать любое имя файла или путь к файлу.
С помощью инструкции ALTER DATABASE удалите логический файл, созданный в шаге 1, как в следующем примере:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
Создайте резервную копию журнала транзакций базы данных.
Попробуйте снова удалить логический файл с именем db_file1.