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

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

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

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

MSSQL Ошибка 3961: Snapshot isolation transaction failed in database — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Сообщение: Msg 3961, Level 16, State 1: Snapshot isolation transaction failed in database 'Base1C' because the database does not allow snapshot isolation. Use ALTER DATABASE to allow snapshot isolation.
  • Сбой запросов с уровнем изоляции SET TRANSACTION ISOLATION LEVEL SNAPSHOT.
  • Внешние сервисы аналитики (PowerBI, ClickHouse, Apache Superset) не могут выгрузить данные из базы 1С.

1. Анализ причины сбоя

Клиентское приложение или ETL-коннектор явно запросил уровень изоляции SNAPSHOT, однако в свойствах целевой базы данных отключен параметр ALLOW_SNAPSHOT_ISOLATION.

2. Включение Snapshot Isolation через T-SQL

Выполните команду модификации конфигурации базы данных:

ALTER DATABASE [Base1C] SET ALLOW_SNAPSHOT_ISOLATION ON;
GO

Примечание: Команда может выполняться продолжительное время, если в базе есть активные незавершенные транзакции.

3. Комплексная проверка параметров версионирования

SELECT 
    name,
    snapshot_isolation_state_desc,
    is_read_committed_snapshot_on 
FROM sys.databases 
WHERE name = 'Base1C';
GO

4. Настройка прав и пулов tempdb

После включения ALLOW_SNAPSHOT_ISOLATION ON база начинает активно использовать tempdb для хранения цепочек версий строк (Version Store). Убедитесь в наличии достаточного свободного места на накопителе с tempdb (не менее 20-30% от размера самой активной таблицы).

💡 Практика специалистов: Если к базе 1С подключены тяжелые аналитические отчеты, включение ALLOW_SNAPSHOT_ISOLATION ON позволяет аналитикам читать любые срезы данных без наложения разделяемых блокировок (Shared Locks) и без замедления работы операторов 1С.

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

Требуется ли монопольный доступ (Single User) для включения ALLOW_SNAPSHOT_ISOLATION?

Нет, монопольный доступ не требуется, но команда будет ожидать завершения всех уже выполняющихся транзакций в базе данных.

Использует ли платформа 1С:Предприятие уровень изоляции SNAPSHOT по умолчанию?

Нет, платформа 1С использует уровень READ COMMITTED (с включенным RCSI) или собственный управляемый режим блокировок. Уровень SNAPSHOT чаще всего запрашивают сторонние системы отчетности и BI.

Увеличивает ли ALLOW_SNAPSHOT_ISOLATION нагрузку на CPU?

Нагрузка на CPU возрастает незначительно (накладные расходы на добавление 14 байт указателя версии к строкам), но возрастает нагрузка на дисковую подсистему tempdb.

Как отключить Snapshot Isolation обратно?

Выполните команду: ALTER DATABASE [Base1C] SET ALLOW_SNAPSHOT_ISOLATION OFF; Хранилище версий tempdb будет автоматически очищено фоновым потоком Ghost Cleanup.

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