Příznaky
Když je distribuovaný dotaz, který spojuje víc tabulek a je hostován vzdálenými instancemi Microsoft SQL serveru, když je zapnuténastavení relace XACT_ABORT, může se objevit některá z následujících chyb:
Msg 3989, úroveň 16, stav 1, řádek # nový požadavek nelze spustit, protože by měl být v souladu s platným popisovačem transakce.
Msg 3988, úroveň 16, stav 1, řádek # nová transakce není povolený, protože v relaci jsou spuštěné další podprocesy.
Příčina
V systému SQL Server zpracovávání distribuovaných dotazů (se systémem pro dotazování) je některá omezení návrhu, jsou-li splněny následující podmínky:
-
SQL Server spojuje více tabulek jednoho vzdáleného zdroje dat SQL serveru.
-
Relace, která dotaz vydává, není zařazena do distribuované transakce.
V této situaci může pokus o spuštění dotazu vyvolat jednu ze dvou chyb uvedených v části Příznaky.
Alternativní řešení
Pokud chcete tento problém vyřešit, uzavřete distribuovaný dotaz do příkazu "begin Distributed Transactions": BEGIN DISTRIBUTED TRANSACTION <Distributed Query> COMMIT TRANSACTION