MSSQLSERVER_3961

Gäller för:SQL Server

Details

Attribute Value
Produktnamn SQL Server
Händelse-ID 3961
Händelsekälla MSSQLSERVER
Component SQLEngine
Symboliskt namn XACT_METADATA_INVALID
Meddelandetext Transaktion med ögonblicksbildisolering misslyckades i databasen '%.*ls' eftersom objektet som åtkomstes av uttrycket har ändrats av ett DDL-uttryck i en annan samtidig transaktion sedan starten av denna transaktion. Det är inte tillåtet eftersom metadata inte är versioniserade. Samtidig uppdatering av metadata kan leda till inkonsekvens om det kombineras med ögonblicksbildisolering.

Explanation

Detta fel kan uppstå om du frågar metadata under snapshot isolation och det finns en samtidig DDL-sats som uppdaterar metadata som nås under snapshot isolation. SQL Server stöder inte versionshantering av metadata. Av denna anledning finns det begränsningar för vilka DDL-operationer som kan utföras inom en explicit transaktion som körs under snapshot-isolering. En implicit transaktion är per definition ett enda uttalande som gör det möjligt att upprätthålla semantiken för snapshot-isolering även med DDL-satser. Följande DDL-satser är inte tillåtna under snapshot-isolering efter en BEGIN TRANSACTION-sats: , , , , , DBCC REINDEX, ALTER PARTITION FUNCTION, , ALTER PARTITION SCHEMEeller något common language runtime (CLR) DDL-sats. DROP INDEXALTER INDEXCREATE XML INDEXCREATE INDEXALTER TABLE Dessa uttalanden är tillåtna när du använder snapshot-isolering inom implicita transaktioner. En implicit transaktion är per definition ett enda uttalande som gör det möjligt att upprätthålla semantiken för snapshot-isolering även med DDL-satser.

Användaråtgärd

Ändra snapshot-isoleringsnivån till en icke-snapshot-isoleringsnivå, såsom read committed innan metadata beställs.