monitor
#monitor#3961

3961

Product Name Event ID 3961 Event Source MSSQLSERVER Component SQLEngine Symbolic Name XACT_METADATA_INVALID Message Text Snap

Product

Name

Event ID

3961

Event

Source

MSSQLSERVER

Component

SQLEngine

Symbolic

Name

XACT_METADATA_INVALID

Message

Text

Snapshot isolation transaction failed in database ’%.*ls’ because the object accessed by the

statement has been modified by a DDL statement in another concurrent transaction since

the start of this transaction. It is disallowed because the metadata is not versioned. A

concurrent update to metadata can lead to inconsistency if mixed with snapshot isolation.

This error can occur if you are querying metadata under snapshot isolation and there is a

concurrent DDL statement that updates the metadata that is being accessed under snapshot

isolation. SQL Server does not support versioning of metadata. For this reason, there are

restrictions on what DDL operations can be performed within an explicit transaction running

under snapshot isolation. An implicit transaction, by definition, is a single statement which

makes it possible to enforce the semantics of snapshot isolation even with DDL statements.

The following DDL statements are not permitted under snapshot isolation after a BEGIN

TRANSACTION statement: ALTER TABLE, CREATE INDEX, CREATE XML INDEX, ALTER INDEX,

DROP INDEX, DBCC REINDEX, ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, or any

common language runtime (CLR) DDL statement. These statements are permitted when you

are using snapshot isolation within implicit transactions. An implicit transaction, by definition, is

a single statement which makes it possible to enforce the semantics of snapshot isolation even

with DDL statements.

Expand table