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.
Действия пользователя
Перед запросом метаданных измените уровень изоляции моментального снимка на другой уровень изоляции, например на уровень изоляции зафиксированной операции чтения.