Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_ERR_5170 1С:Предприятие и СУБД

MSSQL Ошибка 5170: Cannot create file because it already exists — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Сообщение: Msg 5170, Level 16, State 1: Cannot create file 'D:\Data\Base1C.mdf' because it already exists. Change the file path or the name, and retry the operation.
  • Сбой при развертывании копии рабочей базы 1С для разработки или тестирования.
  • Ошибка при попытке создания новой базы с именем, которое ранее уже использовалось.

1. Перезапись файлов при восстановлении из бэкапа (WITH REPLACE)

Если выполняется операция восстановления поверх существующей тестовой базы, явно укажите флаг перезаписи REPLACE:

RESTORE DATABASE [Base1C_Test] 
FROM DISK = N'D:\Backup\Base1C_prod.bak' 
WITH 
    MOVE N'Base1C_Data' TO N'D:\Data\Base1C_Test.mdf',
    MOVE N'Base1C_Log' TO N'D:\Data\Base1C_Test_log.ldf',
    REPLACE, RECOVERY;
GO

2. Удаление брошенных (Orphaned) файлов на диске

Если база данных была ранее удалена из SSMS без фактического удаления файлов с файловой системы:

  1. Проверьте, не подключен ли данный файл к другой базе:
SELECT name, physical_name FROM sys.master_files WHERE physical_name LIKE '%Base1C.mdf%';
GO
  1. Если файл не числится в sys.master_files, переименуйте или удалите его вручную в проводнике Windows.

3. Использование уникальных имен для новых баз

При создании нескольких тестовых баз на одном сервере задавайте уникальные имена физических файлов:

CREATE DATABASE [Base1C_Dev] ON 
( NAME = N'Base1C_Dev_Data', FILENAME = N'D:\Data\Base1C_Dev.mdf' )
LOG ON 
( NAME = N'Base1C_Dev_Log', FILENAME = N'D:\Data\Base1C_Dev_log.ldf' );
GO
💡 Практика специалистов: При регулярном автоматическом развертывании тестовых копий 1С из боевых бэкапов (DevOps CI/CD) всегда формируйте имя физического файла с динамическим суффиксом даты или номера ветки (например, Base1C_dev_20250101.mdf).

Частые вопросы (FAQ)

Почему DROP DATABASE иногда оставляет файлы на диске?

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

Опасно ли использовать параметр WITH REPLACE?

Да, параметр WITH REPLACE без предупреждения перезапишет существующие файлы базы данных с тем же именем. Используйте его с осторожностью, чтобы случайно не затереть рабочую базу 1С.

Что делать, если файл занят и не удаляется из проводника?

Используйте утилиту OpenFiles или Process Explorer, чтобы найти процесс, удерживающий дескриптор (часто это сторонний сервис бэкапа или зависший поток СУБД).

Как скриптом проверить существование файла перед созданием базы?

Используйте системную процедуру: EXEC master.dbo.xp_fileexist 'D:\Data\Base1C.mdf', @result OUTPUT.

Полезные материалы
Рекомендуем