Freigeben über


sp_OAGetErrorInfo (Transact-SQL)

Gilt für: SQL Server

Ruft OLE-Automatisierungsfehlerinformationen ab.

Transact-SQL-Syntaxkonventionen

Syntax

sp_OAGetErrorInfo [ objecttoken ]
    [ , source OUTPUT ]
    [ , description OUTPUT ]
    [ , helpfile OUTPUT ]
    [ , helpid OUTPUT ]
[ ; ]

Argumente

objecttoken

Entweder das Objekttoken eines OLE-Objekts, das zuvor mithilfe sp_OACreatevon , oder NULL. Wenn objecttoken angegeben ist, werden Fehlerinformationen für dieses Objekt zurückgegeben. Wenn NULL angegeben, werden die Fehlerinformationen für den gesamten Batch zurückgegeben.

QuellAUSGABE

Die Quelle der Fehlerinformationen. Wenn angegeben, muss es sich um eine lokale Zeichen-, nchar-, Varchar- oder nvarchar-Variable sein. Der Rückgabewert wird bei Bedarf entsprechend der Länge der lokalen Variablen abgeschnitten.

description OUTPUT

Die Beschreibung des Fehlers. Wenn angegeben, muss es sich um eine lokale Zeichen-, nchar-, Varchar- oder nvarchar-Variable sein. Der Rückgabewert wird bei Bedarf entsprechend der Länge der lokalen Variablen abgeschnitten.

Helpfile OUTPUT

Die Hilfedatei für das OLE-Objekt. Wenn angegeben, muss es sich um eine lokale Zeichen-, nchar-, Varchar- oder nvarchar-Variable sein. Der Rückgabewert wird bei Bedarf entsprechend der Länge der lokalen Variablen abgeschnitten.

helpid OUTPUT

Die Kontext-ID der Hilfedatei. Wenn angegeben, muss es sich um eine lokale Int-Variable sein.

Hinweis

Die Parameter für diese gespeicherte Prozedur werden durch Position und nicht durch den Namen angegeben.

Rückgabecodewerte

0 (Erfolg) oder eine Nichtzeronummer (Fehler), die den ganzzahligen Wert des vom OLE-Automatisierungsobjekt zurückgegebenen HRESULT-Werts darstellt.

Weitere Informationen zu HRESULT-Rückgabecodes finden Sie unter OLE-Automatisierungsrücklaufcodes und Fehlerinformationen.

Resultset

Ist kein Ausgabeparameter angegeben, werden die Fehlerinformationen dem Client als Resultset zurückgegeben.

Spaltenname Datentyp Beschreibung
Error binary(4) Binärdarstellung der Fehlernummer
Source nvarchar(nn) Fehlerquelle
Description nvarchar(nn) Beschreibung des Fehlers
Helpfile nvarchar(nn) Hilfedatei für die Quelle
HelpID int Hilfekontext-ID in der Hilfequelldatei

Hinweise

Jeder Aufruf einer gespeicherten OLE-Automatisierungsprozedur (mit Ausnahme sp_OAGetErrorInfo) setzt die Fehlerinformationen zurück. Daher sp_OAGetErrorInfo werden Fehlerinformationen nur für den letzten aufruf der gespeicherten OLE-Automatisierungsprozeduren erhalten. Da sp_OAGetErrorInfo die Fehlerinformationen nicht zurückgesetzt werden, kann sie mehrmals aufgerufen werden, um dieselben Fehlerinformationen abzurufen.

In der folgenden Tabelle werden OLE-Automatisierungsfehler und deren übliche Ursachen aufgelistet.

Fehler und HRESULT Übliche Ursache
Ungültiger Variablentyp (0x80020008) Der Datentyp eines Als Methodenparameter übergebenen Transact-SQL-Werts entspricht nicht dem Microsoft Visual Basic-Datentyp des Methodenparameters, oder ein NULL Wert wurde als Methodenparameter übergeben.
Unbekannter Name (0x8002006) Der angegebene Eigenschafts- oder Methodenname wurde für das angegebene Objekt nicht gefunden.
Ungültige Klassenzeichenfolge (0x800401f3) Angegebene ProgID oder CLSID wird nicht als OLE-Objekt in einer SQL Server-Instanz registriert. Benutzerdefinierte OLE-Automatisierungsserver müssen registriert werden, bevor sie mithilfe sp_OACreatevon Instanziierung instanziiert werden können. Sie können Server mithilfe des Regsvr32.exe Hilfsprogramms für Prozessserver (.dll) oder den /REGSERVER Befehlszeilenschalter für lokale (.exe) Server registrieren.
Fehler bei der Serverausführung (0x80080005) Angegebenes OLE-Objekt wird als lokaler OLE-Server (.exe Datei) registriert, aber die .exe Datei konnte nicht gefunden oder gestartet werden.
Das angegebene Modul konnte nicht gefunden werden (0x8007007e) Angegebenes OLE-Objekt wird als IN-Process OLE-Server (.dll Datei) registriert, aber die .dll Datei konnte nicht gefunden oder geladen werden.
Typenkonflikt (0x80020005) Der Datentyp einer lokalen Transact-SQL-Variablen, die zum Speichern eines zurückgegebenen Eigenschaftswerts oder eines Methodenrückgabewerts verwendet wird, stimmt nicht mit dem Visual Basic-Datentyp der Eigenschafts- oder Methodenrückgabewert überein. Oder der Rückgabewert einer Eigenschaft oder einer Methode wurde angefordert, gibt jedoch keinen Wert zurück.
Der Datentyp oder der Wert des "context"-Parameters von sp_OACreate 'context' ist ungültig. (0x8004275B) Der Wert des Kontextparameters sollte 1, 4 oder 5 sein.

Weitere Informationen zum Verarbeiten von HRESULT-Rückgabecodes finden Sie unter OLE-Automatisierungsrücklaufcodes und Fehlerinformationen.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle "sysadmin ", oder führen Sie die Berechtigung direkt für diese gespeicherte Prozedur aus. Die Serverkonfigurationsoption "Ole Automation Procedures " muss aktiviert sein, um alle Systemprozeduren im Zusammenhang mit der OLE-Automatisierung zu verwenden.

Beispiele

Im folgenden Beispiel werden OLE-Automatisierungsfehlerinformationen angezeigt.

DECLARE @output VARCHAR(255);
DECLARE @hr INT;
DECLARE @source VARCHAR(255);
DECLARE @description VARCHAR(255);

PRINT 'OLE Automation Error Information';

EXEC @hr = sp_OAGetErrorInfo @object,
    @source OUTPUT,
    @description OUTPUT;

IF @hr = 0
BEGIN
    SELECT @output = '  Source: ' + @source;
    PRINT @output;
    SELECT @output = '  Description: ' + @description;
    PRINT @output;
END
ELSE
BEGIN
    PRINT '  sp_OAGetErrorInfo failed.'

    RETURN
END;