MSSQLSERVER_3961

platí pro:SQL Server

Details

Attribute Value
Název produktu SQL Server
ID události 3961
Zdroj události MSSQLSERVER
Součást SQLEngine
Symbolický název XACT_METADATA_INVALID
Text zprávy Transakce izolace snímků selhala v databázi '%.*ls', protože objekt přístupný příkazem byl změněn příkazem DDL v jiné souběžné transakci od začátku této transakce. Tato akce je zakázaná, protože metadata nemají verzování. Souběžná aktualizace metadat může vést k nekonzistencím, pokud se kombinuje s izolací snímku.

Vysvětlení

Tato chyba může nastat, pokud dotazujete metadata v rámci izolace snímků a existuje současný DDL příkaz, který aktualizuje metadata přístupná v izolaci snímku. SQL Server nepodporuje verzování metadat. Z tohoto důvodu existují omezení ohledně toho, jaké DDL operace lze provádět v rámci explicitní transakce běžící pod izolací snapshotu. Implicitní transakce je podle definice jediný příkaz, který umožňuje vynutit sémantiku izolace snímků i u DDL příkazů. Následující DDL příkazy nejsou povoleny při izolaci snapshotu po příkazu BEGIN TRANSACTION: ALTER TABLE, , CREATE INDEXCREATE XML INDEX, ALTER INDEX, DROP INDEXDBCC REINDEX, ALTER PARTITION FUNCTION, , ALTER PARTITION SCHEMEnebo jakýkoli DDL příkaz v běžném jazyce (CLR). Tyto příkazy jsou povoleny, pokud používáte izolaci snímků v rámci implicitních transakcí. Implicitní transakce je podle definice jediný příkaz, který umožňuje vynutit sémantiku izolace snímků i u DDL příkazů.

Uživatelská akce

Změňte úroveň izolace snapshotu na úroveň izolace mimo snapshot, například čtení commcommitted před dotazováním metadat.