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_OACreate
von , 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_OACreate von 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;