Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Príznaky

Predpokladajme, že vytvoríte skupinu dostupnosti pomocou klauzuly WITH DTC_SUPPORT = PER_DB v microsoft SQL Server. Pri pokuse o vykonanie príkazu SAVE TRANSACTION v transakcii alebo systém uložených procedúr, ako je napríklad sp_executesql, sa zobrazí niektoré z nasledujúcich chybových hlásení:

Msg 627, úroveň 16, štát 0, číslo riadka
V rámci distribuovanej transakcie nie je možné použiť funkciu SAVE TRANSACTION.
Msg 12324, úroveň 16, štát 100, číslo riadka
Distribuované transakcie (DTC) nie sú podporované tabuľkami optimalizovanými pre pamäť.
Chyba: 3933, závažnosť: 16, stav: 1.
Transakciu nie je možné povýšiť na distribuovanú transakciu, pretože táto transakcia má aktívny bod uloženia.

Príčina

Ak je pre funkciu WITH DTC_SUPPORT = PER_DB povolená databáza v skupine Vždy podľa dostupnosti, ak transakcia zahŕňa viacero databáz, transakcia sa v SQL Server 2016 SP2 a SQL Server 2017 zvýši na transakciu MSDTC. Existujú obmedzenia v transakciách MSDTC, napríklad ukladacie body nie je možné použiť, tabuľky optimalizované pre pamäť sa nedajú použiť.

V niektorých situáciách medzi databázovými transakciami dochádza nie preto, že používatelia majú transakcie zahŕňajúce dve databázy používateľov, ale preto, že transakcie zahŕňajú aktuálnu databázu a systémové databázy (hlavná databáza, tempdb, model, databáza systémových prostriedkov). Keďže databáza systémových prostriedkov je v skutočnosti iba na čítanie, nie je potrebné zvýšiť úroveň transakcie MSDTC, ak transakcia krížovej databázy zahŕňa databázu systémových prostriedkov, ale nie iné systémové databázy. 

Riešenie

Oprava zavedená v tejto kb preskočí povýšenie na transakciu MSDTC, ak systémová databáza prostriedkov a databáza používateľa, ktorá je súčasťou skupiny dostupnosti povolenej pre PER_DB DTC sú zapojené do transakcie krížovej databázy v rámci tej istej SQL Server inštancie.

Preto ak pôvodná príčina chýb uvedených vyššie je transakcia krížovej databázy zahŕňajúce databázu systémových prostriedkov, táto oprava bude riešiť. Niekedy sa používateľom môžu zobraziť chyby uvedené vyššie s rovnakou základnou príčinou. V nasledujúcom zozname sú uvedené podmienky, na základe ktorých sa táto oprava vzťahuje:

  • Databáza je súčasťou skupiny dostupnosti vždy zapnutej pomocou funkcie WITH DTC_SUPPORT = PER_DB.

  • Transakcia krížovej databázy zahŕňa túto databázu a databázu systémových prostriedkov v rovnakej inštancii SQL Server.

  • V rámci transakcie krížovej databázy sa používa funkcia SAVE TRANSACTION alebo sa používajú tabuľky optimalizované pre pamäť.

Takáto transakcia by zlyhala s chybami uvedenými vyššie bez tejto opravy. S touto opravou by takáto transakcia mala pokračovať.

Poznámka: Táto oprava adries medzi databázovými transakciami, ktoré zahŕňajú databázu systémových prostriedkov, ale všetky transakcie medzi databázami, ktoré zahŕňajú používateľské databázy a obsahujú príkaz SAVE TRANSACTION , budú naďalej neúspešné a musia sa prepísať.

Tento problém je opravený v nasledujúcej kumulatívnej aktualizácii pre SQL Server:

Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli zahrnuté do predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:

Ďalšie informácie

Ďalšie informácie o DTC_SUPPORT = PER_DB, tabuľkách optimalizovaných pre pamäť, funkciu SAVE TRANSACTION nájdete na nasledujúcich prepojeniach.

Databázové transakcie v rámci tej istej inštancie SQL Server prepoja túto časť s 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
tabuľky optimalizované pre pamäť prepájať túto časť s
https://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/transactions-with-memory-optimized-tables?view=sql-server-2017#limitationsuložiť transakciu prepojiť túto časť s 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

Stav

Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.

Odkazy

Získajte informácie o terminológii , ktorá spoločnosť Microsoft používa na popis aktualizácií softvéru.

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×