MSSQLSERVER_3961

Van toepassing op:SQL Server

Details

Attribute Value
Productnaam SQL Server
Gebeurtenis-id 3961
Bron van gebeurtenis MSSQLSERVER
Onderdeel SQLEngine
Symbolische naam XACT_METADATA_INVALID
Berichttekst De transactie voor isolatie van momentopnamen is mislukt in database%.*ls, omdat het object dat wordt geopend door de instructie is gewijzigd door een DDL-instructie in een andere gelijktijdige transactie sinds het begin van deze transactie. Dit is niet toegestaan omdat de metagegevens niet zijn geversied. Een gelijktijdige update van metagegevens kan leiden tot inconsistenties als er tegelijkertijd sprake is van isolatie van een momentopname.

Explanation

Deze fout kan optreden als je metadata opvraagt onder snapshot isolation en er is een gelijktijdige DDL-instructie die de metadata bijwerkt die onder snapshot isolation wordt benaderd. SQL Server ondersteunt geen versiebeheer van metadata. Om deze reden zijn er beperkingen op welke DDL-bewerkingen binnen een expliciete transactie onder snapshot-isolatie kunnen worden uitgevoerd. Een impliciete transactie is per definitie een enkele uitspraak die het mogelijk maakt om de semantiek van snapshot-isolatie af te dwingen, zelfs met DDL-statements. De volgende DDL-instructies zijn niet toegestaan onder snapshot-isolatie na een BEGIN TRANSACTION-instructie: ALTER TABLE, CREATE INDEX, CREATE XML INDEX, ALTER INDEX, DROP INDEX, DBCC REINDEX, ALTER PARTITION FUNCTION, , ALTER PARTITION SCHEMEof een common language runtime (CLR) DDL-instructie. Deze verklaringen zijn toegestaan wanneer u momentopname-isolatie binnen impliciete transacties gebruikt. Een impliciete transactie is per definitie een enkele uitspraak die het mogelijk maakt om de semantiek van snapshot-isolatie af te dwingen, zelfs met DDL-statements.

Gebruikersactie

Verander het snapshot-isolatieniveau naar een niet-snapshot isolatieniveau, zoals read committed voordat metadata wordt opvraagd.