MSSQLSERVER_3961

Применимо к:SQL Server

Сведения

Атрибут значение
Название продукта SQL Server
Идентификатор события 3961
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя XACT_METADATA_INVALID
Текст сообщения Ошибка транзакции в режиме изоляции моментального снимка в базе данных «%.*ls»: объект, к которому производится обращение в данной инструкции, был изменен инструкцией DDL другой, параллельной транзакции после начала данной транзакции. Это запрещено, так как управление версиями метаданных не осуществляется. Одновременное обновление метаданных может привести к несогласованности при выполнении вместе с изоляцией моментального снимка.

Пояснение

Эта ошибка может возникнуть при запросе метаданных во время изоляции моментального снимка, когда выполняется параллельная инструкция DDL, обновляющая метаданные, к которым выполняется обращение при изоляции моментального снимка. SQL Server не поддерживает управление версиями метаданных. По этой причине существуют ограничения для операций DDL, которые могут выполняться в явной транзакции, выполняющийся при изоляции моментальных снимков. Неявная транзакция, по определению, — это отдельная инструкция, которая может принудительно выполнять семантику изоляции моментального снимка даже при наличии инструкций DDL. Следующие инструкции DDL нельзя использовать после инструкции BEGIN TRANSACTION в условиях изоляции моментального снимка: ALTER TABLE, CREATE INDEX, CREATE XML INDEX, ALTER INDEX, DROP INDEX, DBCC REINDEX, ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, а также любые инструкции DDL среды CLR. Эти инструкции разрешены при использовании изоляции моментального снимка в неявных транзакциях. Неявная транзакция, по определению, — это отдельная инструкция, которая может принудительно выполнять семантику изоляции моментального снимка даже при наличии инструкций DDL.

Действие пользователя

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