Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

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:

Kumulativ uppdatering 7 för SQL Server 2017       

Kumulativ uppdatering 1 för SQL Server 2016 SP2

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:

Senaste kumulativa uppdateringen för SQL Server 2017

Senaste kumulativa uppdateringen för SQL Server 2016

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

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

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.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×