Symptom
Anta att du skapar en tillgänglighets grupp med hjälp av with DTC_SUPPORT = PER_DB -satsen i Microsoft SQL Server. När du försöker köra en instruktionen Spara transaktion i en transaktion eller ett system sparat förfarande som sp_executesql,får du något av följande fel meddelanden:
Meddelande 627, nivå 16, tillstånd 0, rad LineNumber Det går inte att använda Spara transaktion i en distribuerad transaktion. Meddelande 12324, nivå 16, State 100, Line LineNumber Distribuerade transaktioner (DTC) stöds inte med minnesoptimerade tabeller. Fel: 3933, allvarlighets grad: 16, tillstånd: 1. Det går inte att befordra transaktionen till en distribuerad transaktion eftersom det finns en aktiv plats för att spara i den här transaktionen.
Orsak
När en databas alltid är aktive rad i gruppen tillgänglighet för DTC_SUPPORT = PER_DB, så länge en transaktion inbegriper flera databaser, befordras transaktionen till MSDTC-transaktion i SQL Server 2016 SP2 och SQL Server 2017. Det finns begränsningar i MSDTC-transaktioner, till exempel spara Points kan inte användas, det går inte att använda minnesoptimerade tabeller.
I vissa situationer sker dubbel databas transaktioner från användare som har transaktioner med två användar databaser, men eftersom transaktionerna berör den aktuella databasen och system databaserna (Master, tempdb, Model, System Resource Database). Eftersom system resurs databasen är i själva verket skrivskyddad behöver du inte befordra till MSDTC Transaction om en databas transaktions databas inbegriper system resurs databasen men inte till andra system databaser.
Lösning
Korrigeringen som introduceras i detta KB hoppar över kampanjen till MSDTC-transaktionen om system resurs databasen och en användar databas som är en del av en tillgänglighets grupp som är aktive rad för PER_DB-DTC är involverad i en databas med flera transaktioner inom samma SQL Server-instans.
Om den ursprungliga orsaken till felet ovan är en kors databas transaktion som berör system resurs databasen, bevaras det av den här korrigerings filen. Ibland kan användaren se de fel som anges ovan med samma underliggande orsak. Nedan följer de villkor som gäller för korrigeringen:
-
En databas är en del av en tillgänglig tillgänglighets grupp med DTC_SUPPORT = PER_DB.
-
En kors databas transaktion inbegriper denna databas och system resurs databasen i samma SQL Server-instans.
-
I databasen kors databas, spara transaktion används eller minnesoptimerade tabeller.
En sådan transaktion misslyckades med ovanstående fel utan den här korrigeringen. Med denna korrigering bör en sådan transaktion gå vidare.
Obs! den här korrigeringen löser flera databas transaktioner som berör system resurs databasen, men eventuell kors databas transaktion som inbegriper användar databaser och som innehåller en instruktion för att Spara transaktion kommer att Miss lyckas och måste skrivas om.
Det här problemet är åtgärdat i den här kumulativa uppdateringen för SQL Server:
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Mer information
Ytterligare information om DTC_SUPPORT = PER_DB, minnesoptimerade tabeller, Spara transaktion finns på följande länkar.
Databas transaktioner i samma SQL Server-instans länka den här delen tillhttps://docs.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-instanceminnesoptimerade tabellerlänka den här delen till https://docs.Microsoft.com/en-US/SQL/Relational-databases/in-memory-OLTP/Transactions-with-Memory-Optimized-tables?View=SQL-Server-2017#limitationsSpara transaktion den här delen till https://docs.Microsoft.com/en-US/SQL/t-SQL/language-Elements/Save-Transaction-Transact-SQL?View=SQL-Server-2017#remarks
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Referenser
Lär dig mer om terminologin som används av Microsoft för att beskriva program varu uppdateringar.