KB4092554-FIX: pogreške 627 ili 12324 nastaju kada se prekogranične transakcije baze podataka promoviraju u distribuirane transakcije u grupi dostupnost sustava SQL Server

Simptomi

Pretpostavimo da stvarate grupu raspoloživosti pomoću DTC_SUPPORT = PER_DB klauzule u programu Microsoft SQL Server. Kada pokušate izvršiti izvješće Spremi transakciju u transakciju ili sistemske spremljene procedure kao što je sp_executesql,primit ćete neku od sljedećih poruka o pogrešci:

MSG 627, razina 16, State 0, Linenumber linija Nije moguće koristiti Spremi TRANSAKCIJU unutar distribuirane transakcije. MSG 12324, razina 16, status 100, Linenumber Distribuirane transakcije (DTC) nisu podržane u tablicama s optimiziranim memorijom. Pogreška: 3933, težina: 16, stanje: 1. Transakciju nije moguće promovirati u distribuiranom transakciji jer postoji aktivna točka spremanja u ovoj transakciji.

Uzrok

Kada je baza podataka uvijek u grupi dostupnost omogućena za DTC_SUPPORT = PER_DB, sve dok transakcija obuhvaća više baza podataka, transakcija se promovira na verziju MSDTC-a u sustavu SQL Server 2016 SP2 i SQL Server 2017. Postoje ograničenja u akcijama MSD-a, na primjer, spremanje bodova nije moguće koristiti, ne može se koristiti memorija optimizirane tablice.

U nekim situacijama unakrsne transakcije u bazi podataka ne događaju se jer korisnici imaju transakcije koje obuhvaćaju dvije korisničke baze podataka, već zbog toga što transakcije obuhvaćaju postojeću bazu podataka i sistemske baze podataka (matrica, tempdb, model, baza podataka resursa sustava). Budući da je baza podataka resursa sustava zapravo samo za čitanje, nije potrebno promicati u transakciji MSD-a ako transakcija unakrsne baze podataka obuhvaća bazu podataka sistemskih resursa, ali ne i druge sistemske baze podataka.

Rješenje

Popravak predstavljen u ovom odjeljku KB preskakuje promociju u transakciji MSD-a ako je baza podataka resursa sustava i korisnička baza podataka koja se nalazi u grupi dostupnost omogućena za PER_DB DB-a uključena u transakciju unakrsne baze podataka u istoj instanci sustava SQL Server.

Dakle, ako je izvorni uzrok pogreške koje je gore navedeno unakrsna transakcija koja uključuje bazu podataka sustava Resource, ovaj će se popravak obratiti njoj. Ponekad korisnik može vidjeti navedene pogreške s istim temeljnim uzrokom. Na sljedećem su popisu uvjeti u kojima se ovaj popravak primjenjuje:

  • Baza podataka dio je uvijek u grupi dostupnost koja je omogućena DTC_SUPPORT = PER_DB.

  • Transakcija unakrsne baze podataka obuhvaća ovu bazu podataka i bazu podataka sustava System u istoj instanci SQL poslužitelja.

  • U transakciji unakrsne baze podataka koristi se spremi TRANSAKCIJU ili su uključene tablice s optimiziranim memorijom.

Takva transakcija neće uspjeti s gore navedenim pogreškama bez tog popravka. Uz ovaj popravak ta se transakcija mora nastaviti.

Pažnja: ovaj popravak rješava transakcije unakrsne baze podataka koje obuhvaćaju bazu podataka sustava System, no bilo koja transakcija unakrsne baze podataka koja obuhvaća korisničke baze podataka i sadrži IZVATKU spremanja transakcije i dalje će propasti i mora biti ponovno napisana.

Taj je problem riješen u sljedećem kumulativnom ažuriranju za SQL Server:

Kumulativno ažuriranje 7 za SQL Server 2017       

Kumulativno ažuriranje 1 za SQL Server 2016 SP2

Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne ispravke uključene u prethodno Kumulativno ažuriranje. Pogledajte najnovija kumulativna ažuriranja za SQL Server:

Najnovije Kumulativno ažuriranje za SQL Server 2017

Najnovije Kumulativno ažuriranje za SQL Server 2016

Dodatne informacije

Dodatne informacije o DTC_SUPPORT = PER_DB, optimiziranoj memoriji za tablice, Spremanje transakcije možete pronaći na sljedećim vezama.

Transakcije baze podataka u istoj instanci sustava SQL Server vezu s ovim dijelom na tablice shttps://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-instanceoptimiziranom memorijomhttps://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-instance veze s ovim dijelom na https://docs.Microsoft.com/en-US/SQL/Relational-Databases/in-memory-OLTP/Transactions-with-Memory-optimized-Tables?View=SQL-Server-2017#limitationsSpremi transakciju Povežite ovaj dio s https://docs.Microsoft.com/en-US/SQL/t-SQL/language-Elements/Save-Transaction-Transact-SQL?View=SQL-Server-2017#remarks

https://docs.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 je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".

Reference

Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ažuriranja.

Potrebna vam je dodatna pomoć?

Proširite svoje vještine
Istražite osposobljavanje
Prvi koristite nove značajke
Pridružite se Microsoft Insidere

Jesu li ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×