Při implementaci vnořenou transakci s zprostředkovatele OLE DB pro SQL Server zobrazí chybová zpráva: "Nelze spustit transakci zprostředkovatele OLE DB"

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:306649
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Microsoft OLE DB Provider for SQL Server nepodporuje vnořené transakce a je vrácena následující chybová zpráva:
Spuštění transakce zprostředkovatele OLE DB % ls.
Microsoft SQL Server také vrátí následující chybová zpráva Pokud zprostředkovatel je zprostředkovatel specifické pro SQL Server:
Server: Zpráva 7392, 16, úroveň Město 2,
Spuštění transakce 'SQLOLEDB zprostředkovatele OLE DB. [Zprostředkovatel OLE/DB vrátil zprávu: pouze jednu transakci mohou být aktivní této relace.]
Příčina
Tato chyba označuje, že změny výkazu dat je právě pokusu proti zprostředkovatele OLE DB při připojení je v transakci explicitní nebo implicitní a zprostředkovatele OLE DB nepodporuje vnořené transakce. SQL Server vyžaduje tato podpora tak, aby na splnění určitých podmínek chyba jej ukončit efekty výkazu změny dat při pokračováním transakce.
Řešení
Tento problém vyřešit, nastavte XACT_ABORT ON před transakce. To způsobí ukončení okolního transakce, pokud dojde k chybě při zpracování příkazu změny dat SQL Server. Pokud SET XACT_ABORT je zapnuto, SQL Server nevyžaduje podporu vnořenou transakci z zprostředkovatele OLE DB.
Prohlášení
Toto chování je záměrné.
Další informace

Kroky pro reprodukci chování

Tento příklad používá propojený server, který používá zprostředkovatele OLE DB pro SQL Server, k vysvětlení efekt XACT_ABORT.
  1. Vytvořit propojený server s názvem Prodej, které používá zprostředkovatele Microsoft OLE DB pro SQL Server pomocí zprostředkovatele OLE DB pro SQL Server.
    USE MasterGOEXEC sp_addlinkedserver     'Sales',    N'SQL Server'GO					
  2. Query Analyzer otevřete a spusťte následující příkaz.
    Begin TransactionInsert into Sales.Northwind.DBO.Customers(CustomerId,CompanyName) Values ('1000','Test')Commit Transaction					
    zobrazí výše uvedené chybová zpráva.

    Možné řešení

  3. Spusťte následující příkaz nastavit XACT_ABORT ON:
    Set XACT_ABORT ON					
  4. Spustit příkaz znovu Vložit. Všimněte si data vložena do tabulky bez chyby.
Odkazy
Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
177138INFORMACE: Vnořených transakcí v ODBC nebo OLE/DB ADO) nejsou k dispozici
187289Postupy: Provést vnořených transakcí s Oracle

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 306649 - Poslední kontrola: 12/06/2015 05:04:19 - Revize: 4.2

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft Data Access Components 2.6, Microsoft Data Access Components 2.6 Service Pack 1

  • kbnosurvey kbarchive kbmt kbprb KB306649 KbMtcs
Váš názor