Администрирование · 11 мин
Как правильно удалить базу 1С SQL
Как безопасно удалить базу 1С на SQL Server: резервная копия, отключение пользователей, удаление через SSMS и консоль кластера, проверка результата и типичные ошибки.
Удаление базы 1С, размещённой на SQL Server, — операция в два уровня: сначала нужно убрать регистрацию базы в кластере серверов 1С, затем удалить саму базу данных на стороне СУБД. Если выполнить только один из шагов, останутся либо «мёртвая» запись в списке баз, либо файлы данных, занимающие место на диске.
Главный риск процедуры — необратимость. Удалённая база SQL восстанавливается только из резервной копии, поэтому перед любыми действиями нужно убедиться, что копия существует, она актуальна и проверена на восстановление. Второй риск — активные сеансы пользователей: удаление базы с открытыми соединениями либо заблокируется, либо оборвёт работу людей с потерей несохранённых данных.
Ниже разобран полный порядок действий: подготовка, отключение пользователей, удаление через SQL Server Management Studio и консоль кластера 1С, а также проверка результата и типичные ошибки. Инструкция подходит для связки «1С:Предприятие 8» с Microsoft SQL Server; для PostgreSQL логика аналогична, отличаются только инструменты.
Подготовка: что сделать до удаления
Первый шаг — резервное копирование. Даже если база кажется ненужной, практика показывает, что через месяц из неё может понадобиться один документ или справочник. Создайте полную копию средствами SQL Server: в SSMS правый клик по базе → «Задачи» → «Создать резервную копию», тип «Полная». Храните файл копии на другом диске или сетевом ресурсе, а не на том же томе, где лежат файлы базы.
Дополнительно полезно сделать выгрузку в файл .dt через конфигуратор 1С. Это платформенный формат, который не зависит от версии SQL Server и восстанавливается даже на другой СУБД. Для больших баз выгрузка занимает заметное время, но как страховочный вариант она оправдана.
Зафиксируйте параметры базы перед удалением: имя базы данных на SQL Server, имя информационной базы в кластере 1С, сервер СУБД и пути к файлам данных. Эти сведения понадобятся, если базу придётся восстанавливать или пересоздавать с теми же настройками.
Завершение сеансов и блокировка базы
Перед удалением все пользователи должны выйти из базы. Активные соединения не дадут удалить базу данных — SQL Server вернёт ошибку, что база используется. Кроме того, принудительный разрыв сеансов в момент записи документов может оставить данные в несогласованном состоянии, что критично, если копия делалась до этого момента.
Откройте консоль кластера серверов 1С (или консоль администрирования через MMC), найдите нужную информационную базу и в её свойствах установите блокировку начала сеансов. Это запретит новые подключения, пока вы завершаете текущие. Затем в списке сеансов принудительно удалите оставшиеся, предварительно предупредив пользователей.
Не забудьте про фоновые и регламентные задания: они тоже держат соединения с базой. Отключите выполнение регламентных заданий в свойствах базы в кластере, иначе задание может переподключиться в самый неподходящий момент.
- 1Создайте полную резервную копию базы в SSMS и при необходимости выгрузку .dt
- 2Проверьте, что копия восстанавливается на тестовом сервере
- 3Установите блокировку сеансов и отключите регламентные задания в консоли кластера
- 4Завершите оставшиеся сеансы пользователей
- 5Удалите информационную базу из кластера 1С без удаления БД (или запомните имя)
- 6Удалите базу данных в SSMS с флагом закрытия существующих подключений
- 7Проверьте, что файлы .mdf и .ldf удалены с диска
Удаление базы из кластера 1С
В консоли кластера серверов 1С удаление информационной базы выполняется через контекстное меню базы → «Удалить». При этом платформа предложит варианты: удалить только регистрацию в кластере, удалить вместе с базой данных на SQL Server или очистить базу данных. Вариант с удалением базы данных сработает, только если учётная запись агента сервера 1С имеет достаточные права на SQL Server.
Более управляемый путь — удалить только регистрацию в кластере, а базу данных убрать отдельно средствами СУБД. Так вы точно контролируете, что и когда удаляется, и видите ошибки SQL Server в явном виде, а не через косвенные сообщения платформы.
Если база файловая и была опубликована на веб-сервере, не забудьте также убрать публикацию из настроек веб-сервера и удалить запись из списка баз у пользователей. Для SQL-базы актуально то же самое: после удаления из кластера строка в файле списка баз (ibases.v8i) у клиентов перестанет работать, поэтому её стоит убрать централизованно, если список распространяется через общий файл.
Удаление базы данных в SQL Server
Через графический интерфейс SSMS
Подключитесь к SQL Server под учётной записью с правами на удаление баз (роль sysadmin или dbcreator). В обозревателе объектов найдите нужную базу, щёлкните правой кнопкой и выберите «Удалить». В диалоге обязательно отметьте флажок «Закрыть существующие соединения» — иначе при наличии хотя бы одного подключения операция завершится ошибкой.
После подтверждения SQL Server удаляет метаданные базы и её физические файлы (.mdf, .ndf, .ldf) с диска. Это отличает удаление (DROP) от отсоединения (Detach): при отсоединении файлы остаются на диске и базу можно присоединить обратно.
Через T-SQL
Тот же результат даёт команда DROP DATABASE. Перед ней базу переводят в однопользовательский режим с принудительным откатом транзакций, чтобы закрыть соединения:
ALTER DATABASE [MyBase1C] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE [MyBase1C];
GO
Используйте скрипт, когда нужно удалить несколько баз подряд или зафиксировать операцию в документации по изменениям. Имя базы проверьте дважды — команда не спрашивает подтверждения.
ALTER DATABASE [MyBase1C] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE [MyBase1C];
GOАльтернатива: отсоединение вместо удаления
Если база не нужна в работе, но удалять её окончательно рано, используйте отсоединение (Detach). База исчезает из списка SQL Server и перестаёт потреблять ресурсы, а файлы остаются на диске — их можно перенести в архивное хранилище и при необходимости присоединить обратно командой Attach или через диалог «Присоединить» в SSMS.
Ещё один вариант — перевести базу в режим OFFLINE. Она остаётся зарегистрированной на сервере, но недоступна для подключений. Это удобно как промежуточная мера на период «обкатки»: если через пару недель никто не спросил, где база, её можно удалять окончательно.
Сравнение вариантов
Окончательное решение: база и файлы стираются с диска. Подходит, когда есть проверенная резервная копия и база точно не понадобится.
База убирается с сервера, файлы сохраняются. Подходит для архивации с возможностью быстрого возврата, но файлы продолжают занимать место.
База остаётся на сервере, но недоступна. Подходит как временная мера перед окончательным удалением, ресурсы диска не освобождаются.
Проверка результата
После удаления убедитесь, что база исчезла из списка баз данных в SSMS и из списка информационных баз в консоли кластера 1С. Обновите оба списка, чтобы исключить устаревшее отображение.
Проверьте файловую систему сервера: каталоги данных SQL Server не должны содержать файлов удалённой базы. Если файлы .mdf или .ldf остались после DROP (такое бывает при ошибках ввода-вывода), удалите их вручную после остановки зависших процессов, которые их удерживают.
Дополнительно проверьте задания агента SQL Server: если для базы были настроены планы обслуживания, резервное копирование или регламентные операции, задания начнут завершаться с ошибкой. Удалите или перенастройте их, чтобы не засорять журналы.
Как проверить результат
Удалённой базы нет в списке после обновления
База отображается или помечена как недоступная
Файлы .mdf и .ldf базы отсутствуют в каталоге данных
Файлы остались и занимают место
Информационная база удалена из списка
Запись осталась и при входе возникает ошибка соединения
Заданий, ссылающихся на удалённую базу, нет
Задания завершаются с ошибкой в журнале
Типичные ошибки и ограничения
Самая частая ошибка — попытка удалить базу с активными соединениями без флага закрытия подключений. SQL Server возвращает ошибку «база данных используется», и неопытный администратор начинает перезапускать службы вместо того, чтобы просто закрыть сеансы. Перезапуск службы SQL Server ради этого не нужен и вреден для других баз на том же сервере.
Вторая ошибка — удаление базы данных напрямую в SQL Server при живой регистрации в кластере 1С. Пользователи продолжают видеть базу в списке, получают ошибки соединения, а регламентные задания кластера штурмуют несуществующую базу. Порядок важен: сначала кластер, потом СУБД.
Третья группа ошибок — права доступа. Учётная запись, под которой работает агент сервера 1С, обычно не имеет прав на удаление баз в SQL Server, поэтому удаление «вместе с базой данных» из консоли кластера завершается неудачей. Выполняйте удаление в SSMS под административной учётной записью СУБД.
FAQ
Можно ли восстановить базу 1С после DROP DATABASE без резервной копии?
Практически нет. DROP DATABASE удаляет файлы данных с диска, и штатных средств восстановления у SQL Server для этого случая нет. Теоретически возможно восстановление файлов специализированными утилитами с диска, пока данные не перезаписаны, но результат не гарантирован. Поэтому резервная копия перед удалением обязательна.
Чем удаление отличается от отсоединения базы?
Удаление (DROP) стирает базу и её файлы полностью. Отсоединение (Detach) убирает базу из списка SQL Server, но файлы .mdf и .ldf остаются на диске — их можно присоединить обратно на этом или другом сервере. Detach подходит для архивного хранения, DROP — для окончательного удаления.
Нужно ли останавливать сервер 1С или SQL Server перед удалением базы?
Нет, останавливать службы не требуется. Достаточно завершить сеансы конкретной базы и закрыть её соединения. Остановка служб затронет все остальные базы на сервере и не даёт никаких преимуществ для удаления одной базы.
Что делать, если при удалении появляется ошибка «база данных используется»?
Значит, к базе есть открытые подключения: сеансы 1С, регламентные задания, открытые окна SSMS с контекстом этой базы или сторонние приложения. Найдите подключения запросом к sys.dm_exec_sessions, завершите их и повторите удаление с флагом закрытия соединений или командой SET SINGLE_USER WITH ROLLBACK IMMEDIATE.
Как удалить базу 1С на PostgreSQL?
Логика та же: сначала удалите регистрацию базы из кластера 1С, затем саму базу данных командой DROP DATABASE в psql или через pgAdmin, предварительно завершив подключения (pg_terminate_backend). Резервную копию перед этим делают утилитой pg_dump.
Можно ли удалить базу простым удалением файлов .mdf и .ldf с диска?
Нет, так делать нельзя. SQL Server будет считать базу существующей, но недоступной (состояние Suspect/Recovery Pending), что порождает ошибки в журналах и проблемы с планами обслуживания. Удалять базу нужно только штатными средствами — DROP DATABASE или диалогом удаления в SSMS.
Что важно запомнить
Удаление базы 1С SQL выполняется в два этапа: сначала регистрация в кластере 1С, затем база данных в SQL Server. Перед удалением обязательна проверенная резервная копия, все сеансы должны быть завершены, а после операции нужно убедиться, что файлы удалены с диска и не осталось заданий, ссылающихся на базу. Если окончательное удаление преждевременно — используйте отсоединение или перевод в OFFLINE.