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

Администрирование · 10 мин

Как отключить базу 1С в SQL Server

Как отключить базу 1С в SQL Server: перевод в offline, detach, завершение сеансов, блокировка через консоль кластера. Риски, проверка результата и типичные ошибки.

Отключение базы 1С на SQL Server требуется при переезде на новый сервер, регламентном обслуживании, восстановлении из резервной копии или выводе базы из эксплуатации. Сама операция занимает несколько минут, но выполненная неправильно она приводит к обрыву сеансов пользователей, потере незавершённых транзакций и повреждению данных. Поэтому отключение всегда начинается с подготовки, а не с команды в Management Studio.

Существует несколько способов отключить базу: перевести её в состояние Offline, отсоединить (Detach), остановить службу SQL Server целиком или заблокировать работу информационной базы на уровне кластера 1С. Каждый вариант решает свою задачу и имеет свои последствия. Ниже разобраны все основные сценарии с точными действиями и проверкой результата.

Что нужно сделать до отключения базы

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

Установите для базы блокировку начала сеансов: свойства информационной базы → параметр «Блокировка начала сеансов включена» с указанием времени начала и сообщением для пользователей. Это не даст никому подключиться, пока идут работы. Затем дождитесь завершения текущих сеансов или завершите их принудительно через контекстное меню сеанса.

Второе обязательное действие — свежая резервная копия. Даже если вы просто переводите базу в Offline на пять минут, сделайте Full backup штатными средствами SQL Server. Это единственная страховка на случай, если база не вернётся в рабочее состояние или файлы окажутся повреждены при последующих операциях.

Как перевести базу в состояние Offline

Перевод в Offline — самый мягкий способ отключения: база остаётся в списке SQL Server, файлы не перемещаются, но подключиться к ней невозможно. Этот вариант подходит для временной остановки, например на время обслуживания дисковой подсистемы или тестирования.

Порядок действий в SQL Server Management Studio: подключитесь к серверу, раскройте узел Databases, щёлкните правой кнопкой по нужной базе и выберите Tasks → Take Offline. Если есть активные соединения, SSMS выдаст ошибку — тогда используйте T-SQL с принудительным откатом транзакций.

sql
ALTER DATABASE [MyBase1C] SET OFFLINE WITH ROLLBACK IMMEDIATE;

Опция WITH ROLLBACK IMMEDIATE принудительно разрывает все соединения и откатывает незавершённые транзакции. Применяйте её только когда уверены, что пользователи вышли и фоновые задания остановлены. Обратное включение выполняется командой ALTER DATABASE с параметром SET ONLINE или через Tasks → Bring Online в SSMS.

Как отсоединить базу через Detach

Detach полностью отсоединяет базу от экземпляра SQL Server: запись о ней удаляется из системных метаданных, а файлы MDF и LDF остаются на диске. Это стандартный способ при переносе базы на другой сервер или в другой каталог. После Detach файлы можно копировать и перемещать — в отличие от Offline, где SQL Server продолжает удерживать файлы.

В SSMS: правой кнопкой по базе → Tasks → Detach. В окне отсоединения отметьте флажок Drop Connections, чтобы сбросить активные соединения. Опцию Update Statistics обычно оставляют включённой. После нажатия OK база исчезнет из списка, а файлы останутся в каталоге данных.

sql
EXEC sp_detach_db @dbname = N'MyBase1C', @skipchecks = 'false';

На новом сервере база подключается через Attach: правой кнопкой по узлу Databases → Attach → Add → выбор MDF-файла. Убедитесь, что версия целевого SQL Server не ниже исходной — базу, отсоединённую от новой версии, нельзя присоединить к старой.

Блокировка базы на уровне кластера 1С

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

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

Отдельный сценарий — удаление информационной базы из кластера. При удалении записи в консоли кластера платформа предложит варианты: оставить базу данных на SQL Server, очистить её или удалить вместе с базой. Выбирайте «оставить без изменений», если база SQL может понадобиться позже.

Сравнение способов отключения

Offline в SQL Server

Временная остановка, файлы остаются на месте, база видна в списке. Не подходит для переноса файлов — SQL Server их удерживает.

Detach

Перенос базы на другой сервер или каталог. Файлы освобождаются, но база исчезает из экземпляра до повторного Attach.

Блокировка сеансов в кластере 1С

Штатные регламентные работы: обновление, загрузка данных. Самый безопасный вариант, база остаётся полностью работоспособной.

Остановка службы SQL Server

Только когда нужно отключить все базы сразу, например при обслуживании сервера. Затрагивает все базы экземпляра.

Как проверить, что база действительно отключена

После операции убедитесь, что результат соответствует ожиданиям. В SSMS база в состоянии Offline отображается с соответствующей пометкой в обозревателе объектов. Отсоединённая база полностью исчезает из списка Databases. Дополнительно проверьте состояние запросом к sys.databases — столбец state_desc покажет OFFLINE или отсутствие строки для отсоединённой базы.

Со стороны 1С проверьте, что при запуске информационной базы пользователь получает ошибку соединения с СУБД или сообщение о блокировке сеансов. Это подтверждает, что отключение сработало. Если база была отсоединена, а запись в кластере 1С осталась, при запуске будет ошибка вида «база данных не найдена» — это ожидаемое поведение, а не сбой.

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

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

Состояние базы в SSMS
Норма

Пометка Offline рядом с именем базы или отсутствие базы в списке после Detach

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

База доступна, открываются таблицы — отключение не выполнено

Активные соединения
Норма

Запрос к sys.dm_exec_sessions по базе возвращает пустой результат

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

Есть активные сессии — кто-то или что-то подключился заново

Запуск базы в 1С
Норма

Сообщение о блокировке сеансов или ошибка соединения с СУБД

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

База открывается в обычном режиме

Файлы данных
Норма

После Detach файлы MDF/LDF доступны для копирования

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

Файл занят процессом sqlservr — база не отсоединена

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

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

Вторая ошибка — использование Detach вместо резервной копии. Отсоединённые файлы не являются бэкапом: если при копировании файл повредится, восстанавливать будет нечего. Для архивирования используйте BACKUP DATABASE, а Detach — только для переноса.

Третья проблема — забытая запись в кластере 1С. После удаления или переноса базы на SQL Server запись об информационной базе остаётся, и пользователи видят её в списке, получая ошибку при входе. Удаляйте или обновляйте запись в консоли кластера после завершения работ на стороне SQL.

Типичные ошибки
01
Отключение базы при активных сеансах — откат транзакций и риск несогласованности данных
02
Detach без предварительного бэкапа — при повреждении файлов восстановление невозможно
03
Попытка присоединить базу к SQL Server более старой версии — операция невозможна технически
04
Удаление базы в SQL без чистки записи в кластере 1С — пользователи получают ошибки при запуске
05
Остановка службы SQL Server ради одной базы — простой всех остальных баз экземпляра

Частые вопросы

Можно ли отключить базу 1С в SQL без остановки работы пользователей?

Нет, корректное отключение требует завершения всех сеансов. Минимизировать простой можно так: заранее предупредите пользователей, включите блокировку начала сеансов на конкретное время и выполняйте операцию, когда все выйдут. Принудительный разрыв соединений через ROLLBACK IMMEDIATE возможен, но чреват потерей несохранённых данных.

Чем Offline отличается от Detach?

Offline оставляет базу зарегистрированной на сервере — она видна в списке, файлы заняты SQL Server, вернуть её в работу можно одной командой. Detach полностью удаляет регистрацию базы в экземпляре и освобождает файлы, что нужно для переноса на другой сервер. Для временной остановки используйте Offline, для переезда — Detach.

Что будет, если просто удалить файлы базы вручную?

SQL Server пометит базу как подозрительную (Suspect) или она перейдёт в состояние Recovery Pending, а при перезапуске службы будут ошибки в журнале. Файлы базы нельзя удалять, перемещать или переименовывать, пока база присоединена к серверу. Сначала выполните Detach — только после этого файлы освобождаются.

Как отключить базу, если забыт пароль администратора кластера 1С?

Операции Offline и Detach выполняются средствами SQL Server и не требуют доступа к кластеру 1С — достаточно прав sysadmin на SQL Server. Однако без доступа к кластеру вы не сможете штатно заблокировать сеансы, поэтому завершать соединения придётся принудительно через KILL в SQL Server или ROLLBACK IMMEDIATE.

Нужно ли отключать базу в SQL перед обновлением конфигурации 1С?

Нет. Для обновления конфигурации достаточно блокировки сеансов в консоли кластера и завершения активных сеансов. Отключение базы на уровне SQL Server при обновлении избыточно и только усложняет процедуру: конфигуратору нужен доступ к базе для реструктуризации таблиц.

Итог

Что важно запомнить

Любое отключение начинается с блокировки сеансов в кластере 1С и свежей резервной копии. Для временной остановки используйте Offline, для переноса — Detach, для регламентных работ — только блокировку сеансов. После операции проверьте состояние базы, отсутствие соединений и актуальность записи в кластере 1С.