Megosztás a következőn keresztül:


Tranzakciók – rendelkezésre állási csoportok és adatbázis-tükrözés

A következőkre vonatkozik:SQL Server

Ez a cikk az Always On rendelkezésre állási csoportok és az adatbázis-tükrözés adatbázisközi és elosztott tranzakciók támogatását ismerteti.

Elosztott tranzakciók támogatása

Az SQL Server 2017 támogatja a rendelkezésre állási csoportokban lévő adatbázisok elosztott tranzakcióit. Ez a támogatás magában foglalja az SQL Server ugyanazon példányán lévő adatbázisokat vagy az SQL Server különböző példányainak adatbázisait. Az elosztott tranzakciók nem támogatottak az adatbázis-tükrözésre konfigurált adatbázisok esetében.

Megjegyzés:

Az SQL Server 2016 (13.x) Service Pack 2 és újabb verziói teljes körű támogatást nyújtanak a rendelkezésre állási csoportok elosztott tranzakcióihoz.

A Service Pack 2 előtti SQL Server 2016 -os (13.x) verziókban nem támogatottak az adatbázisok közötti elosztott tranzakciók (például az ugyanazon AZ SQL Server-példány adatbázisait használó tranzakciók), amelyek egy rendelkezésre állási csoportban lévő adatbázist érintenek.

Az elosztott tranzakciókhoz rendelkezésre állási csoport konfigurálásához lásd: Rendelkezésre állási csoport konfigurálása elosztott tranzakciókhoz.

További információ:

SQL Server 2016 SP1 és korábbi: Adatbázisközi tranzakciók támogatása ugyanabban az SQL Server-példányban

Az SQL Server 2016 SP1 és korábbi verziójában az ugyanazon AZ SQL Server-példányon belüli adatbázisközi tranzakciók nem támogatottak a rendelkezésre állási csoportok esetében. Két adatbázist nem üzemeltethet ugyanaz az SQL Server-példány egy adatbázisközi tranzakcióban, ha az egyik vagy mindkét adatbázis rendelkezésre állási csoportban van. Ez a korlátozás akkor is érvényes, ha ezek az adatbázisok ugyanahhoz a rendelkezésre állási csoporthoz tartoznak.

Az adatbázisok közötti tranzakciók az adatbázis-tükrözéshez sem támogatottak.

SQL Server 2016 SP1 és korábbi: Elosztott tranzakciók támogatása

Az elosztott tranzakciók rendelkezésre állási csoportokkal támogatottak, ha az adatbázisokat különböző SQL Server-példányok üzemeltetik. Az SQL Server-példányok és más DTC-kompatibilis kiszolgálók közötti elosztott tranzakciókra is vonatkozik.

A Microsoft Distributed Transaction Coordinator (MSDTC vagy DTC) egy Windows-szolgáltatás, amely tranzakciós infrastruktúrát biztosít az elosztott rendszerek számára. Az MSDTC lehetővé teszi, hogy az ügyfélalkalmazások több adatforrást is belefoglaljanak egy tranzakcióba, amelyet aztán a tranzakcióban szereplő összes kiszolgálóra lekötöttek. Az MSDTC használatával például koordinálhatja a különböző kiszolgálókon található több adatbázist felölelő tranzakciókat.

Az SQL Server 2016 bevezeti az elosztott tranzakciók használatát, ha a tranzakció egy vagy több adatbázisa rendelkezésre állási csoportban található. Az SQL Server 2016 előtt az elosztott tranzakciók nem támogatottak a rendelkezésre állási csoportokban lévő adatbázisok esetében. Az SQL Server 2016 adatbázisonként regisztrálhat egy erőforrás-kezelőt. Ennek az új funkciónak az az oka, hogy az elosztott tranzakciók adatbázisokat tartalmazhatnak a rendelkezésre állási csoportokban.

A következő követelményeknek kell teljesülniük:

  • A rendelkezésre állási csoportoknak Windows Server 2012 R2 vagy újabb rendszeren kell futniuk. Windows Server 2012 R2 esetén telepítenie kell a frissítést KB3090973.

  • A rendelkezésre állási csoportokat a CREATE AVAILABILITY GROUP paranccsal és a WITH DTC_SUPPORT = PER_DB záradékkal kell létrehozni. Meglévő rendelkezésre állási csoport jelenleg nem módosítható.

  • A rendelkezésre állási csoportban részt vevő SQL Server összes példányának SQL Server 2016-os vagy újabb verziójának kell lennie.

Elosztott tranzakciók nem támogatottak

Az elosztott tranzakciókat nem támogató konkrét esetek a következők:

  • Az SQL Server 2016 SP1-ben és az azt megelőzőben, ahol a tranzakcióban részt vevő több adatbázis ugyanabban a rendelkezésre állási csoportban található.

  • Az SQL Server 2016 SP1 és korábbi verzióiban, ahol legalább egy adatbázis rendelkezésre állási csoportban van, és egy másik adatbázis az SQL Server ugyanazon példányán található.

  • Amikor a rendelkezésre állási csoportot nem hozták létre elosztott tranzakciók engedélyezésével.

  • Adatbázis-tükrözés.

Fontos

Határozza meg azoknak a tranzakcióknak az alapértelmezett eredményét, amelyeket a DTC nem tud megoldani az ön környezetében. Az alapértelmezett eredmény konfigurálásáról részletes információkat a vitás tranzakciók feloldásának kiszolgáló konfigurációs opciójában talál.

Példaforgatókönyv adatbázis-tükrözéssel

Az alábbi adatbázistükrözési példa bemutatja, hogyan fordulhat elő logikai inkonzisztencia. Ebben a példában egy alkalmazás egy adatbázisközi tranzakcióval két adatsort szúr be: az egyik sort egy tükrözött adatbázisban lévő táblázatba szúrja be, A, a másik sort pedig egy másik adatbázisban lévő táblázatba szúrja be, A. Az A adatbázis magas biztonsági módban, automatikus feladatátvétellel lesz tükrözve. A tranzakció véglegesítése közben az A adatbázis elérhetetlenné válik, és a tükrözési munkamenet automatikusan átesik az A adatbázis tükörén.

A feladatátvételt követően előfordulhat, hogy az adatbázisközi tranzakció sikeresen le lesz véglegesítve a B adatbázisban, de a feladatátvételi adatbázisban nem. Ha például az A adatbázis eredeti egyszerű kiszolgálója nem küldte el az adatbázisközi tranzakció naplóit a tükrözött kiszolgálónak a hiba előtt. A feladatátvételt követően az a tranzakció nem létezne az új fő kiszolgálón. Az A és a B adatbázis inkonzisztenssé válik, mivel a B adatbázisban beszúrt adatok érintetlenek maradnak, de az A adatbázisban beszúrt adatok elvesznek.

Hasonló forgatókönyv fordulhat elő MS DTC-tranzakció használatakor. A feladatátvétel után például az új fő kapcsolattartó kapcsolatba lép az MS DTC-vel. Az MS DTC azonban nincs ismerete az új elsődleges kiszolgálóról, és leállítja az előkészítés alatt álló tranzakciókat, amelyeket más adatbázisok véglegesítettnek tekintenek.

Megjegyzés:

Az adatbázis-tükrözés DTC-vel vagy rendelkezésre állási csoportok DTC-vel való használata a jelen cikkben nem jóváhagyott módon nem támogatott. Ez nem jelenti azt, hogy a terméknek a DTC-hez nem kapcsolódó aspektusai nem támogatottak; az elosztott tranzakciók helytelen használatából eredő problémák azonban nem támogatottak.

Következő lépések

Always On rendelkezésre állási csoportok: Interoperabilitás (SQL Server)