Freigeben über


sp_OAGetErrorInfo (Transact-SQL)

Ruft OLE-Automatisierungsfehlerinformationen ab.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • objecttoken
    Das Objekttoken eines zuvor mit sp_OACreate erstellten OLE-Objekts oder aber der Wert NULL. Wird objecttoken angegeben, werden Fehlerinformationen für dieses Objekt zurückgegeben. Wird NULL angegeben, werden die Fehlerinformationen für den gesamten Batch zurückgegeben.

  • sourceOUTPUT
    Die Quelle der Fehlerinformation. Wenn angegeben, muss es sich um eine lokale Variable vom Datentyp char, nchar, varchar oder nvarchar handeln. Der Rückgabewert wird bei Bedarf entsprechend der Länge der lokalen Variablen abgeschnitten.

  • descriptionOUTPUT
    Die Beschreibung des Fehlers. Wenn angegeben, muss es sich um eine lokale Variable vom Datentyp char, nchar, varchar oder nvarchar handeln. Der Rückgabewert wird bei Bedarf entsprechend der Länge der lokalen Variablen abgeschnitten.

  • helpfileOUTPUT
    Die Hilfedatei des OLE-Objekts. Wenn angegeben, muss es sich um eine lokale Variable vom Datentyp char, nchar, varchar oder nvarchar handeln. Der Rückgabewert wird bei Bedarf entsprechend der Länge der lokalen Variablen abgeschnitten.

  • helpidOUTPUT
    Die Kontext-ID für die Hilfedatei. Wenn angegeben, muss es sich um eine lokale Variable vom Typ int handeln.

    HinweisHinweis

    Die Parameter für diese gespeicherte Prozedur werden nicht nach dem Namen, sondern nach der Position angegeben.

Rückgabecodewerte

0 (Erfolg) oder eine Zahl ungleich null (Fehler), die dem ganzzahligen Wert von HRESULT entspricht, der vom OLE-Automatisierungsobjekt zurückgegeben wird.

Weitere Informationen zu HRESULT-Rückgabecodes finden Sie unter Rückgabecodes und Fehlerinformationen der OLE-Automatisierung.

Resultsets

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

Spaltennamen

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 Prozedur der OLE-Automatisierung (mit Ausnahme von sp_OAGetErrorInfo) setzt die Fehlerinformationen zurück. sp_OAGetErrorInfo kann also nur die Fehlerinformationen der zuletzt aufgerufenen gespeicherten Prozedur der OLE-Automatisierung abfragen. Da sp_OAGetErrorInfo die Fehlerinformationen nicht zurücksetzt, ruft ein mehrfaches Aufrufen stets dieselben Fehlerinformationen ab.

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

Fehler und HRESULT

Übliche Ursache

Falscher Variablentyp (0x80020008)

Der Datentyp eines Transact-SQL-Wertes, der als Parameter einer Methode übergeben wurde, entspricht nicht dem MicrosoftVisual Basic-Datentyp des Parameters der Methode, oder ein NULL-Wert wurde als Methodenparameter angegeben.

Unbekannter Name (0x8002006)

Der angegebene Eigenschafts- oder Methodenname für das angegebene Objekt wurde nicht gefunden.

Ungültige Klassenzeichenfolge (0x800401f3)

Die angegebene ProgID oder CLSID wurde in einer Instanz von SQL Server nicht als OLE-Objekt registriert. Die benutzerdefinierten OLE-Automatisierungsserver müssen registriert werden, bevor sie mit sp_OACreate instantiiert werden können. Dies kann mit dem Dienstprogramm Regsvr32.exe für In-Process-Server (DLL) oder über den Befehlszeilenschalter /REGSERVER für lokale Server (EXE) erreicht werden.

Starten des Servers fehlgeschlagen (0x80080005)

Das angegebene OLE-Objekt ist als lokaler OLE-Server (EXE-Datei) registriert, aber die EXE-Datei konnte nicht gefunden oder nicht ausgeführt werden.

Das angegebene Modul wurde nicht gefunden (0x8007007e)

Das angegebene OLE-Objekt ist als In-Process-OLE-Server (DLL-Datei) registriert, aber die DLL-Datei konnte nicht gefunden oder nicht geladen werden.

Typenkonflikt (0x80020005)

Der Datentyp einer lokalen Transact-SQL-Variablen, die zum Speichern eines zurückgegebenen Eigenschaftswertes oder eines Rückgabewertes einer Methode verwendet wird, entspricht nicht dem Visual Basic-Datentyp des Rückgabewertes der Eigenschaft oder Methode. Oder der Rückgabewert einer Eigenschaft oder einer Methode wurde angefordert, gibt jedoch keinen Wert zurück.

Der Datentyp oder Wert des 'context'-Parameters von sp_OACreate 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 Rückgabecodes und Fehlerinformationen der OLE-Automatisierung.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin.

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 OUT, @description OUT
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