Bejelentkezés Microsoft-fiókkal
Jelentkezzen be, vagy hozzon létre egy fiókot.
Üdvözöljük!
Válasszon másik fiókot.
Több fiókja van
Válassza ki a bejelentkezéshez használni kívánt fiókot.

Jelenségek

Tegyük fel, hogy a Microsoft SQL Server WITH DTC_SUPPORT = PER_DB záradékával hoz létre rendelkezésre állási csoportot. Amikor egy tranzakcióban vagy rendszer által tárolt eljárásban (például sp_executesql) kísérel meg SAVE TRANSACTION utasítást végrehajtani, a következő hibaüzenetek egyike jelenik meg:

Msg 627, Level 16, State 0, Line LineNumber
A SAVE TRANSACTION nem használható elosztott tranzakción belül.
Msg 12324, Level 16, State 100, Line LineNumber
Az elosztott tranzakciók (DTC) nem támogatottak a memóriaoptimalizált táblákban.
Hiba: 3933, Súlyosság: 16, Állapot: 1.
A tranzakció nem léptethető elő elosztott tranzakcióra, mert a tranzakcióban aktív mentési pont található.

A probléma oka

Ha egy AlwaysOn rendelkezésre állási csoportban lévő adatbázis engedélyezve van a WITH DTC_SUPPORT = PER_DB esetében, ha egy tranzakció több adatbázist is érint, a tranzakció msdTC-tranzakcióra lépteti elő SQL Server 2016 SP2 és SQL Server 2017-ben. Az MSDTC-tranzakciókra korlátozások vonatkoznak, például a mentési pontok nem használhatók, a memóriaoptimalizált táblák nem használhatók.

Bizonyos esetekben az adatbázisközi tranzakciók nem azért történnek, mert a felhasználók két felhasználói adatbázist érintő tranzakciókkal rendelkeznek, hanem azért, mert a tranzakciók az aktuális adatbázist és rendszeradatbázisokat (master, tempdb, modell, rendszererőforrás-adatbázis) foglalják magukban. Mivel a rendszererőforrás-adatbázis valójában csak olvasható, nem szükséges előléptetni az MSDTC-tranzakcióra, ha egy adatbázisközi tranzakció a rendszererőforrás-adatbázist érinti, más rendszeradatbázisokat azonban nem. 

Megoldás

Az ebben a tudásbázisban bevezetett javítás kihagyja az MSDTC-tranzakcióra való előléptetést, ha a rendszererőforrás-adatbázis és a PER_DB DTC számára engedélyezett rendelkezésre állási csoport részét képező felhasználói adatbázis egy adatbázisközi tranzakcióban vesz részt ugyanazon SQL Server példányon belül.

Ezért ha a fent felsorolt hibák eredeti oka a rendszererőforrás-adatbázist érintő adatbázisközi tranzakció, ez a javítás megoldja azt. Előfordulhat, hogy a felhasználó ugyanazzal a mögöttes okkal látja a fent felsorolt hibákat. Az alábbiakban felsoroljuk azokat a feltételeket, amelyek mellett ez a javítás érvényes:

  • Az adatbázisok a WITH DTC_SUPPORT = PER_DB engedélyezett Always On rendelkezésre állási csoport részei.

  • Az adatbázisközi tranzakció magában foglalja ezt az adatbázist és a rendszererőforrás-adatbázist ugyanabban a SQL Server példányban.

  • A rendszer az adatbázisközi tranzakción belül a SAVE TRANSACTION tranzakciót használja, vagy memóriaoptimalizált táblákat használ.

Az ilyen tranzakció a fent felsorolt hibákkal hiúsulna meg a javítás nélkül. Ezzel a javítással az ilyen tranzakciónak folytatódnia kell.

Megjegyzés: Ez a javítás a rendszererőforrás-adatbázist érintő adatbázisközi tranzakciókat kezeli, de a felhasználói adatbázisokat és a SAVE TRANSACTION utasítást tartalmazó adatbázisközi tranzakciók továbbra is sikertelenek lesznek, és újra kell írni őket.

Ezt a problémát az alábbi összegző frissítésben javítottuk SQL Server esetében:

A SQL Server minden új összegző frissítése tartalmazza az összes gyorsjavítást és az előző összegző frissítésben szereplő összes biztonsági javítást. Tekintse meg a SQL Server legújabb összegző frissítéseit:

További információ

A DTC_SUPPORT = PER_DB, a memóriaoptimalizált táblák és a SAVE TRANSACTION értékről az alábbi hivatkozásokon talál további információt.

Az ugyanazon SQL Server példányon belüli adatbázis-tranzakciók ezt a részt 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
memóriaoptimalizált táblákhoz csatoljákhttps://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/transactions-with-memory-optimized-tables?view=sql-server-2017#limitationsSAVE TRANSACTION (TRANZAKCIÓ MENTÉSE)
összekapcsolja ezt a részt a 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

Állapot

A Microsoft megerősítette, hogy ez a probléma „A következőkre vonatkozik:” részben felsorolt Microsoft-termékekre vonatkozik.

Hivatkozások

Ismerje meg a Microsoft által a szoftverfrissítések leírására használt terminológiát .

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.

Hasznos volt ez az információ?

Mennyire elégedett a fordítás minőségével?
Mi volt hatással a felhasználói élményére?
Ha elküldi a visszajelzést, a Microsoft felhasználja azt a termékei és szolgáltatásai továbbfejlesztéséhez. Az informatikai rendszergazda képes lesz ezeket az adatokat összegyűjteni. Adatvédelmi nyilatkozat.

Köszönjük a visszajelzését!

×