sp_OAGetErrorInfo (Transact-SQL)
Ruft OLE-Automatisierungsfehlerinformationen ab.
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.source OUTPUT
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.description OUTPUT
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.helpfile OUTPUT
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.helpid OUTPUT
Die Kontext-ID für die Hilfedatei. Wenn angegeben, muss es sich um eine lokale int-Variable handeln.Hinweis 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 |
Beschreibung |
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 Microsoft Visual 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 Hilfsprogramm 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