Ошибки · Решение
SQL Server ошибка 3021: что означает и как исправить
Команда резервного копирования или восстановления выполняется в пользовательской транзакции, а SQL Server этого не допускает.
Короткий ответ
Ошибка 3021 означает, что BACKUP или RESTORE запущен внутри пользовательской транзакции. Завершите или откатите транзакцию и выполняйте операцию резервного копирования отдельно.
Что означает ошибка
Команда резервного копирования или восстановления выполняется в пользовательской транзакции, а SQL Server этого не допускает.
Возможные причины
- BACKUP/RESTORE выполняется между BEGIN TRAN и COMMIT/ROLLBACK.
- Процедура-обёртка неявно открыла transaction раньше административной команды.
- ORM/automation держит транзакцию вокруг набора statements, куда попал BACKUP или RESTORE.
Что проверить
- Найдите внешний BEGIN TRAN в вызывающем коде.
- Сверьте, не включает ли job несколько административных действий в одну transaction scope.
- Проверьте `@@TRANCOUNT` перед командой.
Безопасные шаги
- Повторите операцию в отдельном session/context.
- Завершите или откатите пользовательскую транзакцию до BACKUP/RESTORE.
- Вынесите административную команду из transactional wrapper.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если SQL Server 3021 повторяется после проверки указанного состояния, передайте DBA полный текст ошибки, несколько соседних записей SQL Server error log, версию/edition, имя базы и точную команду, на которой возник сбой.
Похожие ошибки
- /errors/sql-server-error-3002/
- /errors/sql-server-error-3013/
- /errors/sql-server-error-3023/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.