Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 2.18 KB

mssqlserver-3961-database-engine-error.md

File metadata and controls

32 lines (27 loc) · 2.18 KB
title description author ms.author ms.date ms.service ms.subservice ms.topic helpviewer_keywords
MSSQLSERVER_3961
MSSQLSERVER_3961
MashaMSFT
mathoma
04/04/2017
sql
supportability
reference
3961 (Database Engine error)

MSSQLSERVER_3961

[!INCLUDE SQL Server]

Details

Attribute Value
Product Name SQL Server
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.

Explanation

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. [!INCLUDEssNoVersion] 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.

User Action

Change the snapshot isolation level to a non-snapshot isolation level such as read committed before querying metadata.