Aanmelden met Microsoft
Meld u aan of maak een account.
Hallo,
Selecteer een ander account.
U hebt meerdere accounts
Kies het account waarmee u zich wilt aanmelden.

Symptomen

Stel dat u een beschikbaarheidsgroep maakt met behulp van de component WITH DTC_SUPPORT = PER_DB in Microsoft SQL Server. Wanneer u een SAVE TRANSACTION-instructie probeert uit te voeren in een transactie of systeem opgeslagen procedures zoals sp_executesql, ontvangt u een van de volgende foutberichten:

Msg 627, Level 16, State 0, Line LineNumber
Kan SAVE TRANSACTION niet gebruiken binnen een gedistribueerde transactie.
Msg 12324, Level 16, State 100, Line LineNumber
Gedistribueerde transacties (DTC) worden niet ondersteund met tabellen die zijn geoptimaliseerd voor geheugen.
Fout: 3933, Ernst: 16, Status: 1.
Kan de transactie niet promoveren naar een gedistribueerde transactie omdat deze transactie een actief opslagpunt heeft.

Oorzaak

Wanneer een database in AlwaysOn-beschikbaarheidsgroep is ingeschakeld voor WITH DTC_SUPPORT = PER_DB, zolang een transactie meerdere databases omvat, wordt de transactie in SQL Server 2016 SP2 en SQL Server 2017 gepromoveerd tot MSDTC-transactie. Er zijn beperkingen in MSDTC-transacties, bijvoorbeeld: opslagpunten kunnen niet worden gebruikt, tabellen die zijn geoptimaliseerd voor geheugen, kunnen niet worden gebruikt.

In sommige situaties vinden transacties tussen databases plaats, niet omdat gebruikers transacties hebben met twee gebruikersdatabases, maar omdat de transacties betrekking hebben op de huidige database en systeemdatabases (hoofddatabase, tempdb, model, systeemresourcedatabase). Omdat de systeemresourcedatabase in feite alleen-lezen is, is het niet nodig om te promoveren naar MSDTC-transactie als een transactie tussen databases een systeemresourcedatabase omvat, maar geen andere systeemdatabases. 

Oplossing

De oplossing die in deze KB is geïntroduceerd, slaat de promotie naar MSDTC-transactie over als de systeemresourcedatabase en een gebruikersdatabase die deel uitmaakt van een beschikbaarheidsgroep die is ingeschakeld voor PER_DB DTC betrokken zijn bij een transactie tussen databases binnen hetzelfde SQL Server exemplaar.

Dus als de oorspronkelijke oorzaak van de hierboven genoemde fouten een transactie tussen databases is waarbij de systeemresourcedatabase betrokken is, wordt deze oplossing opgelost. Soms ziet de gebruiker de bovenstaande fouten met dezelfde onderliggende oorzaak. Hieronder ziet u de voorwaarden waaronder deze oplossing van toepassing is:

  • Een database maakt deel uit van een AlwaysOn-beschikbaarheidsgroep waarvoor WITH DTC_SUPPORT = PER_DB is ingeschakeld.

  • Een transactie tussen databases omvat deze database en de systeemresourcedatabase in hetzelfde SQL Server exemplaar.

  • In de transactie voor meerdere databases wordt SAVE TRANSACTION gebruikt of zijn tabellen met geoptimaliseerd geheugen betrokken.

Een dergelijke transactie mislukt met fouten die hierboven worden vermeld zonder deze oplossing. Met deze oplossing moet een dergelijke transactie worden voortgezet.

Opmerking: Deze oplossing heeft betrekking op transacties tussen databases die betrekking hebben op de systeemresourcedatabase, maar elke transactie tussen databases waarbij gebruikersdatabases zijn betrokken en die een SAVE TRANSACTION-instructie bevat, mislukt nog steeds en moet opnieuw worden geschreven.

Dit probleem is opgelost in de volgende cumulatieve update voor SQL Server:

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingscorrecties die zijn opgenomen in de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Meer informatie

Meer informatie over DTC_SUPPORT = PER_DB, tabellen die zijn geoptimaliseerd voor geheugen, SAVE TRANSACTION vindt u op de volgende koppelingen.

Databasetransacties binnen hetzelfde SQL Server exemplaar koppelen dit onderdeel aan 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
voorgeheugen geoptimaliseerde tabellen dit onderdeel koppelen aan
https://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/transactions-with-memory-optimized-tables?view=sql-server-2017#limitationsSAVE TRANSACTION koppelt dit onderdeel aan 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 heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Verwijzingen

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?
Als u op Verzenden klikt, wordt uw feedback gebruikt om producten en services van Microsoft te verbeteren. Uw IT-beheerder kan deze gegevens verzamelen. Privacyverklaring.

Hartelijk dank voor uw feedback.

×