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"

Překlady článku Překlady článku
ID článku: 306649 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

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 Master
    GO
    EXEC sp_addlinkedserver 
        'Sales',
        N'SQL Server'
    GO
    					
  2. Query Analyzer otevřete a spusťte následující příkaz.
    Begin Transaction
    Insert 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

Vlastnosti

ID článku: 306649 - Poslední aktualizace: 9. prosince 2005 - Revize: 4.2
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbprb KB306649 KbMtcs
Strojově přeložený článek
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

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com