Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
SSIS Integration Runtime ve službě Azure Data Factory
Balíčky používají transakce k vytvoření vazby databázových akcí, které provádějí úlohy do atomických jednotek, a tím zajistí integritu dat. Všechny kontejnerové balíčky integračních služeb Microsoftu, for Loop, For Loop a Sequence a hostitele úloh, které zapouzdřují jednotlivé úlohy, je možné nakonfigurovat tak, aby používaly transakce. Integrační služby poskytují tři možnosti konfigurace transakcí: Nepodporované, podporované a povinné.
Povinný argument označuje, že kontejner spustí transakci, pokud již není spuštěn nadřazeným kontejnerem. Pokud transakce již existuje, kontejner připojí transakci. Pokud například balíček, který není nakonfigurovaný pro podporu transakcí, obsahuje kontejner Sequence, který používá požadovanou možnost , kontejner Sequence spustí svou vlastní transakci. Pokud byl balíček nakonfigurovaný tak, aby používal požadovanou možnost, kontejner Sequence by připojil transakci balíčku.
Podporovaná indikuje, že kontejner nespustí transakci, ale spojí všechny transakce spuštěné jeho nadřazeným kontejnerem. Pokud například balíček se čtyřmi spuštěními úloh SQL spustí transakci a všechny čtyři úkoly používají podporovanou možnost, aktualizace databáze prováděné prováděním úloh SQL se vrátí zpět, pokud některý z úkolů selže. Pokud balíček nespustí transakci, čtyři úlohy Execute SQL nejsou vázány transakcí a žádné aktualizace databáze s výjimkou těch, které provádí neúspěšná úloha, se vrátí zpět.
NotSupported značí, že kontejner nespustí transakci nebo nepřipojí existující transakci. Transakce spuštěná nadřazeným kontejnerem nemá vliv na podřízené kontejnery, které byly nakonfigurovány tak, aby nepodpořily transakce. Pokud je například balíček nakonfigurovaný tak, aby spustil transakci a kontejner For Loop v balíčku používá možnost NotSupported , žádná z úloh ve smyčce for nemůže vrátit zpět, pokud selže.
Transakce nakonfigurujete nastavením Vlastnosti TransactionOption v kontejneru. Tuto vlastnost můžete nastavit pomocí okna Vlastnosti v SQL Server Data Tools (SSDT) nebo můžete vlastnost nastavit programově.
Poznámka:
TransactionOption vlastnost ovlivňuje, zda hodnota IsolationLevel vlastnost požadovaná kontejnerem je použita. Další informace naleznete v popisu IsolationLevel vlastnost v tématu Nastavení vlastnosti balíčku.
Konfigurace balíčku pro použití transakcí
Při konfiguraci balíčku pro použití transakcí máte dvě možnosti:
Mít jednu transakci pro balíček. V tomto případě je to samotný balíček, který inicializuje tuto transakci, zatímco jednotlivé úlohy a kontejnery v balíčku se účastní této jediné transakce.
V balíčku je více transakcí. V tomto případě balíček podporuje transakce, ale jednotlivé úlohy a kontejnery v balíčku skutečně iniciují transakce.
Následující postupy popisují, jak nakonfigurovat obě možnosti.
Konfigurace balíčku pro použití jedné transakce
V této možnosti samotný balíček inicializuje jednu transakci. Balíček nakonfigurujete tak, aby inicializovat tuto transakci nastavením TransactionOption vlastnost balíčku na Required.
V dalším kroku vypište konkrétní úlohy a kontejnery v této jediné transakci. Chcete-li zahrnout úkol nebo kontejner v transakci, nastavíte TransactionOption vlastnost tohoto úkolu nebo kontejneru na podporovanou.
V nástrojích SQL Server Data Tools (SSDT) otevřete projekt Integrační služby, který obsahuje balíček, který chcete nakonfigurovat tak, aby používal transakci.
V Průzkumníku řešení poklikáním otevřete balíček.
Klikněte na kartu Tok řízení .
Klikněte pravým tlačítkem myši na libovolné místo na pozadí návrhové plochy toku řízení a potom klikněte na příkaz Vlastnosti.
V okně Vlastnosti nastavte TransactionOption vlastnost Required.
Na návrhové ploše karty ControlFlow klikněte pravým tlačítkem myši na úkol nebo kontejner, který chcete zaregistrovat v transakci, a potom klepněte na příkaz Vlastnosti.
V okně Vlastnosti nastavte Vlastnost TransactionOption na Podporovaná.
Poznámka:
Chcete-li připojit připojení v transakci, zaregistrujte úlohy, které používají připojení v transakci. Další informace najdete v tématu Připojení služby SSIS (Integration Services).
Opakujte kroky 6 a 7 pro každou úlohu a kontejner, které chcete zaregistrovat v transakci.
Konfigurace balíčku pro použití více transakcí
V této možnosti samotný balíček podporuje transakce, ale nespustí transakci. Balíček nakonfigurujete tak, aby podporoval transakce nastavením TransactionOption vlastnost balíčku na Podporováno.
Dále nakonfigurujete požadované úlohy a kontejnery uvnitř balíčku tak, aby iniciovaly transakce nebo se jich účastnily. Chcete-li nakonfigurovat úkol nebo kontejner pro zahájení transakce, nastavte TransactionOption vlastnost tohoto úkolu nebo kontejneru na Povinné.
V nástrojích SQL Server Data Tools (SSDT) otevřete projekt Integrační služby, který obsahuje balíček, který chcete nakonfigurovat pro použití transaction.s.
V Průzkumníku řešení poklikáním otevřete balíček.
Klikněte na kartu Tok řízení .
Klikněte pravým tlačítkem myši na libovolné místo na pozadí návrhové plochy toku řízení a potom klikněte na příkaz Vlastnosti.
V okně Vlastnosti nastavte Vlastnost TransactionOption na Podporovaná.
Poznámka:
Balíček podporuje transakce, ale transakce jsou spuštěny úlohou nebo kontejnery v balíčku.
Na návrhové ploše karty ControlFlow klikněte pravým tlačítkem myši na úkol nebo kontejner v balíčku, pro který chcete spustit transakci, a potom klepněte na příkaz Vlastnosti.
V okně Vlastnosti nastavte TransactionOption vlastnost Required.
Pokud je transakce spuštěna kontejnerem, klepněte pravým tlačítkem myši na úkol nebo kontejner, který chcete zaregistrovat v transakci, a potom klepněte na příkaz Vlastnosti.
V okně Vlastnosti nastavte Vlastnost TransactionOption na Podporovaná.
Poznámka:
Chcete-li připojit připojení v transakci, zaregistrujte úlohy, které používají připojení v transakci. Další informace najdete v tématu Připojení služby SSIS (Integration Services).
Opakujte kroky 6 až 9 pro každý úkol a kontejner, který spouští transakci.
Více transakcí v balíčku
Balíček může obsahovat nesouvisející transakce v balíčku integrační služby. Kdykoli kontejner uprostřed vnořené hierarchie kontejnerů nepodporuje transakce, kontejnery nad nebo pod ním v hierarchii spustí samostatné transakce, pokud jsou nakonfigurovány tak, aby podporovaly transakce. Transakce potvrdí nebo vrátí zpět v pořadí od nejvnitřnější úlohy v hierarchii vnořeného kontejneru do balíčku. Po potvrzení vnitřní transakce se však nevrátí zpět, pokud je vnější transakce přerušena.
Příklad více transakcí v balíčku
Balíček má například kontejner Sequence, který obsahuje dva kontejnery smyčky Foreach a každý kontejner obsahuje dvě úlohy Execute SQL. Kontejner Sequence podporuje transakce, kontejnery smyčky Foreach ne a provádění úloh SQL. V tomto příkladu by každá úloha Execute SQL spustila svou vlastní transakci a nevrátí se zpět, pokud byla transakce v úloze pořadí přerušena.
Vlastnosti TransactionOption kontejneru Sequence, Foreach Loop kontejneru a Provádění úloh SQL jsou nastaveny takto:
Vlastnost TransactionOption kontejneru Sequence je nastavena na Required.
Vlastnosti TransactionOption kontejnerů foreach Loop jsou nastaveny na NotSupported.
Vlastnosti TransactionOption pro provádění úloh SQL jsou nastaveny na Povinné.
Následující diagram znázorňuje pět nesouvisejících transakcí v balíčku. Jedna transakce je spuštěna kontejnerem Sequence a čtyři transakce jsou spuštěny prováděním úloh SQL.
Zděděné transakce
Balíček může spustit jiný balíček pomocí úlohy Spustit balíček. Podřízený balíček, což je balíček spouštěný úlohou Execute Package, může vytvořit vlastní transakci balíčku, nebo může dědit nadřazenou transakci balíčku.
Podřízený balíček dědí transakci nadřazeného balíčku, pokud jsou splněny obě následující podmínky:
Balíček je vyvolán úlohou Execute Package.
Úloha Execute Package, která vyvolala balíček, připojila také nadřazenou transakci balíčku.
Kontejnery a úkoly v podřízené balíčku nemohou spojit nadřazenou transakci balíčku, pokud podřízený balíček sám není spojení transakce.
Příklad zděděných transakcí
V následujícím diagramu jsou tři balíčky, které všechny používají transakce. Každý balíček obsahuje více úkolů. Chcete-li zdůraznit chování transakcí, jsou zobrazeny pouze úlohy Execute Package. Balíček A spouští balíčky B a C. Balíček B pak spouští balíčky D a E a balíček C spouští balíček F.
Balíčky a úlohy mají následující atributy transakce:
TransactionOption je nastavena na Required on packages A a C
TransactionOption je nastavena na podporované v balíčcích B a D a v úlohách spouštět balíček B, Execute Package D a Execute Package F.
TransactionOption je nastavena na NotSupported pro balíček E a úlohy Execute Package C a Execute Package E.
Pouze balíčky B, D a F mohou dědit transakce z nadřazených balíčků.
Balíčky B a D dědí transakci, která byla spuštěna balíčkem A.
Package F dědí transakci, která byla spuštěna balíčkem C.
Balíčky A a C řídí své vlastní transakce.
Balíček E nepoužívá transakce.