Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

Symptomer

Antag, at du opretter en tilgængelighedsgruppe ved hjælp af delsætningen WITH DTC_SUPPORT = PER_DB i Microsoft SQL Server. Når du forsøger at udføre en SAVE TRANSACTION-sætning i en transaktion eller systemlagrede procedurer, f.eks . sp_executesql, modtager du en af følgende fejlmeddelelser:

Msg 627, niveau 16, tilstand 0, linjelinjenummer
Save TRANSACTION kan ikke bruges i en distribueret transaktion.
Msg 12324, niveau 16, tilstand 100, linjelinjenummer
DTC (Distributed Transactions) understøttes ikke med hukommelsesoptimerede tabeller.
Fejl: 3933, Alvorsgrad: 16, Tilstand: 1.
Transaktionen kan ikke hæves til en distribueret transaktion, fordi der er et aktivt lagringspunkt i denne transaktion.

Årsag

Når en database i gruppen Altid tilgængelig er aktiveret for WITH DTC_SUPPORT = PER_DB, så længe en transaktion involverer flere databaser, overføres transaktionen til MSDTC-transaktion i SQL Server 2016 SP2 og SQL Server 2017. Der er begrænsninger i MSDTC-transaktioner, for eksempel kan save points ikke bruges, hukommelsesoptimerede tabeller kan ikke bruges.

I nogle situationer sker transaktioner på tværs af databaser ikke, fordi brugerne har transaktioner, der involverer to brugerdatabaser, men fordi transaktionerne involverer den aktuelle database og systemdatabaser (master, tempdb, model, systemressourcedatabase). Da systemressourcedatabasen faktisk er skrivebeskyttet, er det ikke nødvendigt at opgradere til MSDTC-transaktion, hvis en krydsdatabasetransaktion involverer systemressourcedatabase, men ikke andre systemdatabaser. 

Løsning

Den rettelse, der blev introduceret i denne KB, springer kampagnen over til MSDTC-transaktionen, hvis systemressourcedatabasen og en brugerdatabase, der er en del af en tilgængelighedsgruppe, der er aktiveret for PER_DB DTC, er involveret i en krydsdatabasetransaktion inden for samme SQL Server forekomst.

Hvis den oprindelige årsag til fejl, der er angivet ovenfor, er krydsdatabasetransaktion, der involverer systemressourcedatabase, løser denne rettelse den. Nogle gange kan brugeren få vist de fejl, der er angivet ovenfor, med den samme underliggende årsag. Følgende viser de betingelser, som denne rettelse gælder under:

  • En database er en del af en altid tilgængelig gruppe, der er aktiveret MED DTC_SUPPORT = PER_DB.

  • En krydsdatabasetransaktion omfatter denne database og systemressourcedatabasen i samme SQL Server forekomst.

  • Inden for krydsdatabasetransaktionen bruges SAVE TRANSACTION, eller hukommelsesoptimerede tabeller er involveret.

En sådan transaktion vil mislykkes med fejl, der er angivet ovenfor uden denne rettelse. Med denne rettelse bør en sådan transaktion fortsætte.

Bemærk! Denne rettelse løser transaktioner på tværs af databaser, der involverer systemressourcedatabasen, men enhver transaktion på tværs af databaser, der involverer brugerdatabaser og indeholder en SAVE TRANSACTION-sætning , vil stadig mislykkes og skal omskrives.

Dette problem er rettet i følgende kumulative opdatering til SQL Server:

Hver ny samlet opdatering til SQL Server indeholder alle hotfixes og alle de sikkerhedsrettelser, der var inkluderet i den tidligere akkumulerede opdatering. Se de seneste kumulative opdateringer til SQL Server:

Flere oplysninger

Du kan finde flere oplysninger om DTC_SUPPORT = PER_DB, hukommelsesoptimerede tabeller, SAVE TRANSACTION på følgende links.

Databasetransaktioner inden for samme SQL Server forekomst sammenkæder denne del med https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-2017#sql-server-2016-sp1-and-before-support-for-cross-database-transactions-within-the-same-sql-server-instance
Hukommelsesoptimerede tabeller sammenkæder denne del med
https://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/transactions-with-memory-optimized-tables?view=sql-server-2017#limitationsSAVE TRANSACTION sammenkæder denne del med https://learn.microsoft.com/en-us/sql/t-sql/language-elements/save-transaction-transact-sql?view=sql-server-2017#remarks

https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-replication-for-always-on-availability-groups-sql-server?view=sql-server-2017#step2

Status

Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".

Referencer

Få mere at vide om den terminologi , som Microsoft bruger til at beskrive softwareopdateringer.

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×