Поделиться через


MSSQLSERVER_3961

Сведения

Название продукта

SQL Server

Версия продукта

10.50

Номер построения продукта

10.00.1050.6

Идентификатор события

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.

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

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