Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: 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.