К статье
Практический материал

Администрирование · 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. 1
    Создайте полную резервную копию базы в SSMS и при необходимости выгрузку .dt
  2. 2
    Проверьте, что копия восстанавливается на тестовом сервере
  3. 3
    Установите блокировку сеансов и отключите регламентные задания в консоли кластера
  4. 4
    Завершите оставшиеся сеансы пользователей
  5. 5
    Удалите информационную базу из кластера 1С без удаления БД (или запомните имя)
  6. 6
    Удалите базу данных в SSMS с флагом закрытия существующих подключений
  7. 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

Используйте скрипт, когда нужно удалить несколько баз подряд или зафиксировать операцию в документации по изменениям. Имя базы проверьте дважды — команда не спрашивает подтверждения.

sql
ALTER DATABASE [MyBase1C] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE [MyBase1C];
GO

Альтернатива: отсоединение вместо удаления

Если база не нужна в работе, но удалять её окончательно рано, используйте отсоединение (Detach). База исчезает из списка SQL Server и перестаёт потреблять ресурсы, а файлы остаются на диске — их можно перенести в архивное хранилище и при необходимости присоединить обратно командой Attach или через диалог «Присоединить» в SSMS.

Ещё один вариант — перевести базу в режим OFFLINE. Она остаётся зарегистрированной на сервере, но недоступна для подключений. Это удобно как промежуточная мера на период «обкатки»: если через пару недель никто не спросил, где база, её можно удалять окончательно.

Сравнение вариантов

Удаление (DROP)

Окончательное решение: база и файлы стираются с диска. Подходит, когда есть проверенная резервная копия и база точно не понадобится.

Отсоединение (Detach)

База убирается с сервера, файлы сохраняются. Подходит для архивации с возможностью быстрого возврата, но файлы продолжают занимать место.

Перевод в OFFLINE

База остаётся на сервере, но недоступна. Подходит как временная мера перед окончательным удалением, ресурсы диска не освобождаются.

Проверка результата

После удаления убедитесь, что база исчезла из списка баз данных в SSMS и из списка информационных баз в консоли кластера 1С. Обновите оба списка, чтобы исключить устаревшее отображение.

Проверьте файловую систему сервера: каталоги данных SQL Server не должны содержать файлов удалённой базы. Если файлы .mdf или .ldf остались после DROP (такое бывает при ошибках ввода-вывода), удалите их вручную после остановки зависших процессов, которые их удерживают.

Дополнительно проверьте задания агента SQL Server: если для базы были настроены планы обслуживания, резервное копирование или регламентные операции, задания начнут завершаться с ошибкой. Удалите или перенастройте их, чтобы не засорять журналы.

Контрольные точки

Как проверить результат

Список баз в SSMS
Норма

Удалённой базы нет в списке после обновления

Тревожный признак

База отображается или помечена как недоступная

Файлы на диске
Норма

Файлы .mdf и .ldf базы отсутствуют в каталоге данных

Тревожный признак

Файлы остались и занимают место

Кластер 1С
Норма

Информационная база удалена из списка

Тревожный признак

Запись осталась и при входе возникает ошибка соединения

Задания агента SQL
Норма

Заданий, ссылающихся на удалённую базу, нет

Тревожный признак

Задания завершаются с ошибкой в журнале

Типичные ошибки и ограничения

Самая частая ошибка — попытка удалить базу с активными соединениями без флага закрытия подключений. SQL Server возвращает ошибку «база данных используется», и неопытный администратор начинает перезапускать службы вместо того, чтобы просто закрыть сеансы. Перезапуск службы SQL Server ради этого не нужен и вреден для других баз на том же сервере.

Вторая ошибка — удаление базы данных напрямую в SQL Server при живой регистрации в кластере 1С. Пользователи продолжают видеть базу в списке, получают ошибки соединения, а регламентные задания кластера штурмуют несуществующую базу. Порядок важен: сначала кластер, потом СУБД.

Третья группа ошибок — права доступа. Учётная запись, под которой работает агент сервера 1С, обычно не имеет прав на удаление баз в SQL Server, поэтому удаление «вместе с базой данных» из консоли кластера завершается неудачей. Выполняйте удаление в SSMS под административной учётной записью СУБД.

Типичные ошибки
01
Удаление без проверенной резервной копии — при необходимости восстановить данные окажется нечего
02
Удаление базы в SQL Server до удаления регистрации в кластере — пользователи получают ошибки, задания кластера генерируют сбои
03
Попытка удалить базу с активными сеансами без закрытия подключений — операция блокируется ошибкой
04
Забытые задания агента SQL и планы обслуживания — журналы заполняются ошибками после удаления
05
Удаление под учётной записью без прав sysadmin/dbcreator — операция отклоняется СУБД

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.