Jak získat přístup k další informace o chybách, které jsou vráceny při použití automatizace OLE systémové uložené procedury

DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.

Projděte si také anglickou verzi článku: 243899
Souhrn
OLE automatizace uložené procedury potřebovat neomezený přístup k objektům, které chtějí vyvolat, aby mohl správně fungovat. Běžně následující chyby může zobrazit při zachování nevyřešených problémů cílových objektů:
[Microsoft] [Ovladač ODBC serveru SQL] Chyba protokolu v sekvenci TDS
[Microsoft] [Ovladač ODBC serveru SQL] Chyba funkce řady
Další informace
V takovém případě může existovat několik základních problémů vyskytujících se současně. Především chybě datového proudu (TDS) tabulková data je z větší části Obecná chyba, a pokud se zabývají implementací služby Remote Data Service (RDS), nebude tato zcela jasné ukazatele na příčinu problému. S cílem posílit vracené informace o chybě, je nutné nahradit sp_oageterrorinfo volání pomocí volání sp_displayoaerrorinfo. Při přístupu k této další informace, které potřebujete nejprve kompilovat dvě spíše užitečný uložené procedury uvedené v následujícím článku SQL Server 7.0 Books Online:

   OLE Automation Return Codes and Error Information				
V článku také podrobně vysvětluje, proč jsou potřeba tyto uložené procedury k extrahovat další užitečné informace, které nejsou zmíněny v tomto článku.

Pokud jste zkompilovali uložené procedury, předchozí chyby vám nabídne mnohem více užitečné informace, jak je znázorněno v následující fragmentu, který používá upravenou chyba zpracování předejte nám mnohem zajímavější výstup:
DECLARE @object intDECLARE @hr intEXEC @hr = sp_OACreate 'Nic.cls', @object OUTPUTIF @hr <> 0BEGIN    EXEC sp_displayoaerrorinfo @object, @hr--  EXEC sp_OAGetErrorInfo @object    RETURNEND				
Co můžeme získat voláním sp_displayoaerrorinfo povoleno v tomto případě vypadá následovně:
Informace o chybě automatizace OLE
HRESULT: 0X800401F3
Zdroj: ODSOLE Extended procedury
Popis: Nesprávný řetězec třídy
V tomto příkladu vidíme, že chyba "Neplatná třída řetězce" může znamenat, že identifikátorem ProgID nebo CLSID (Nic.cls v předchozím příkladu) v volání sp_oacreate nebyla registrována úspěšně jako objekt OLE na serveru SQL Server. V našem příkladu by totiž ve skutečnosti případu Nic.cls je fiktivní objektu.

Další informace o těchto typů chyb prohlédněte si dokumentaci k volání sp_oaGetErrorInfo v SQL Server Books Online.

Chcete-li vidět o něco více, co se děje zde, přidat "Vybrat @hr" mezi IF a příkazy BEGIN v kódu následujícím způsobem:
DECLARE @oFTP intDECLARE @hr int  DECLARE @vvar varchar(255)DECLARE @vout intEXEC @hr = sp_OACreate 'Nic.Inet', @object OUTPUTSELECT @hrIF @hr <> 0BEGIN    EXEC sp_displayoaerrorinfo @object, @hr--   EXEC sp_OAGetErrorInfo @object    RETURNEND				
Tento příkaz vrátí následující informace o chybě jako dříve povolena:
------------2147221005(1 row(s) affected)				
Informace o chybě automatizace OLE
HRESULT: 0X800401F3
Zdroj: ODSOLE Extended procedury
Popis: Nesprávný řetězec třídy
Je třeba poznamenat, že může být tempting být @hr pouze přidat volání @object sp_OAGetErrorInfo EXEC, který Pokud se bude skutečně vrátit false úspěch ve výsledku "příkaz byl úspěšně dokončen". Však ve skutečnosti totiž není co chceme, musíme vědět, proč nenulový výsledek se zobrazuje pro jiné @hr v kódu.

Poznámka: Pokud používáte Microsoft SQL Server 2005, bude pravděpodobně mírně tento kód změnit. Další informace naleznete v tématu "Automatizace OLE vrátit kódy a informace o chybě" v SQL Server 2005 Books Online.
OLE automatizace sp_oamethod sp_oacreate sp_displayoaerrorinfo "nesprávný řetězec třídy"

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

Vlastnosti

ID článku: 243899 - Poslední kontrola: 11/01/2015 01:32:00 - Revize: 5.0

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbinfo kbmt KB243899 KbMtcs
Váš názor