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

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

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

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

MSSQL Error 41368: Accessing memory optimized tables using READ COMMITTED — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка выполнения запроса: Error: 41368, Severity: 16, State: 1. Accessing memory optimized tables using the READ COMMITTED isolation level is supported only for autocommit transactions. It is not supported for explicit or implicit transactions.
  • Сбой при выполнении запросов 1С внутри явных транзакционных блоков BEGIN TRANSACTION ... COMMIT.
  • Невозможность выполнить SELECT из оптимизированной таблицы при стандартных настройках сессии 1С.

1. Причина ограничения уровня READ COMMITTED в Hekaton

Ядро In-Memory OLTP не поддерживает классический уровень READ COMMITTED с блокировками чтения внутри пользовательских явных транзакций (Explicit Transactions). Доступ возможен либо в режиме автофиксации одиночной команды (Autocommit), либо с явным указанием хинта поддерживаемой изоляции (SNAPSHOT, REPEATABLEREAD, SERIALIZABLE).

2. Глобальное решение через параметр базы данных (Рекомендуемое)

Включите автоматическое неявное повышение изоляции READ COMMITTED до SNAPSHOT для всех Memory-Optimized таблиц базы данных:

-- Включение автоматического сопоставления READ COMMITTED -> SNAPSHOT
ALTER DATABASE [buh_1c_db]
SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;

3. Использование табличных хинтов в T-SQL коде

Если изменить параметры базы данных невозможно, явно укажите хинт WITH (SNAPSHOT) в запросе:

BEGIN TRANSACTION;

-- Явное указание уровня изоляции для таблицы Hekaton
SELECT 
    ItemCode, 
    StockQty 
FROM dbo.CurrentStock_InMemory WITH (SNAPSHOT)
WHERE WarehouseID = 10;

COMMIT TRANSACTION;

4. Проверка текущих параметров изоляции базы 1С

SELECT 
    name,
    is_memory_optimized_elevate_to_snapshot_on
FROM sys.databases
WHERE database_id = DB_ID();
💡 Практика специалистов: При создании любой базы данных 1С, использующей таблицы In-Memory OLTP, всегда выполняйте команду 'ALTER DATABASE ... SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON' еще на этапе первичного развертывания схемы СУБД.

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

Что делает опция MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT?

При установке в ON любые запросы внутри явных транзакций, выполняющиеся с уровнем READ COMMITTED (стандарт для 1С), автоматически и прозрачно для приложения выполняются как SNAPSHOT при обращении к memory-optimized таблицам.

Почему одиночный SELECT без BEGIN TRANSACTION работает без ошибок?

Одиночные команды вне явного транзакционного блока работают в режиме Autocommit (автоматическая фиксация), для которого уровень READ COMMITTED официально разрешен ядром Hekaton.

Влияет ли опция ELEVATE_TO_SNAPSHOT на обычные дисковые таблицы?

Нет, эта опция влияет исключительно на обращения к таблицам с параметром MEMORY_OPTIMIZED = ON и не меняет поведение обычных дисковых таблиц 1С.

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

Нет, команда ALTER DATABASE ... SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON выполняется мгновенно в режиме онлайн без разрыва сеансов пользователей 1С.

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