sp_OAGetErrorInfo (Transact-SQL)

S'applique à : SQL Server

Obtient des informations d'erreur OLE Automation.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

objecttoken

Jeton d’objet d’un objet OLE créé précédemment à l’aide sp_OACreatede , ou NULL. Si objecttoken est spécifié, les informations d’erreur de cet objet sont retournées. Si NULL elle est spécifiée, les informations d’erreur pour l’ensemble du lot sont retournées.

SORTIE source

Source des informations d’erreur. Si elle est spécifiée, il doit s’agir d’une variable char, nchar, varchar ou nvarchar locale. Si nécessaire, la valeur renvoyée est tronquée pour s'adapter à la variable locale.

description OUTPUT

Description de l'erreur. Si elle est spécifiée, il doit s’agir d’une variable char, nchar, varchar ou nvarchar locale. Si nécessaire, la valeur renvoyée est tronquée pour s'adapter à la variable locale.

helpfile OUTPUT

Fichier d’aide pour l’objet OLE. Si elle est spécifiée, il doit s’agir d’une variable char, nchar, varchar ou nvarchar locale. Si nécessaire, la valeur renvoyée est tronquée pour s'adapter à la variable locale.

HELPID OUTPUT

ID de contexte du fichier d’aide. S’il est spécifié, il doit s’agir d’une variable int locale.

Remarque

Les paramètres pour cette procédure stockée sont spécifiés par position et non pas par nom.

Valeurs des codes de retour

0 (réussite) ou nombre différent de zéro (échec) qui est la valeur entière du HRESULT retourné par l’objet OLE Automation.

Pour plus d’informations sur les codes de retour HRESULT, consultez les codes de retour OLE Automation et les informations d’erreur.

Jeu de résultats

Si aucun paramètre de sortie n'est spécifié, les informations d'erreur sont renvoyées au client sous la forme d'un ensemble de résultats.

Nom de la colonne Type de données Description
Error binary(4) Représentation binaire du numéro d'erreur.
Source nvarchar(nn) Source de l'erreur.
Description nvarchar(nn) Description de l’erreur.
Helpfile nvarchar(nn) Fichier d'aide pour la source.
HelpID int ID du contexte de l'aide dans le fichier source d'aide.

Notes

Chaque appel à une procédure stockée OLE Automation (sauf sp_OAGetErrorInfo) réinitialise les informations d’erreur ; par conséquent, sp_OAGetErrorInfo obtient uniquement les informations d’erreur pour l’appel de procédure stockée OLE Automation le plus récent. Étant donné que sp_OAGetErrorInfo ne réinitialise pas les informations d’erreur, elle peut être appelée plusieurs fois pour obtenir les mêmes informations d’erreur.

Le tableau suivant donne la liste des erreurs OLE Automation et leurs causes courantes.

Erreur et HRESULT Cause courante
Type de variable incorrecte (0x80020008) Le type de données d’une valeur Transact-SQL passée en tant que paramètre de méthode ne correspond pas au type de données Microsoft Visual Basic du paramètre de méthode, ou une NULL valeur a été passée en tant que paramètre de méthode.
Nom inconnu (0x8002006) La propriété ou le nom de méthode spécifié n’a pas été trouvé pour l’objet spécifié.
Chaîne de classe non valide (0x800401f3) ProgID ou CLSID spécifié n’est pas inscrit en tant qu’objet OLE sur une instance de SQL Server. Les serveurs OLE Automation personnalisés doivent être inscrits avant de pouvoir être instanciés à l’aide sp_OACreatede . Vous pouvez inscrire des serveurs à l’aide de l’utilitaire Regsvr32.exe pour les serveurs in-process (.dll) ou le /REGSERVER commutateur de ligne de commande pour les serveurs locaux (.exe).
Échec de l’exécution du serveur (0x80080005) L’objet OLE spécifié est inscrit en tant que serveur OLE local (.exe fichier), mais le fichier .exe est introuvable ou démarré.
Impossible de trouver le module spécifié (0x8007007e) L’objet OLE spécifié est inscrit en tant que serveur OLE in-process (.dll fichier), mais le fichier .dll est introuvable ou chargé.
Incompatibilité de type (0x80020005) Le type de données d’une variable locale Transact-SQL utilisée pour stocker une valeur de propriété retournée ou une valeur de retour de méthode ne correspond pas au type de données Visual Basic de la propriété ou de la valeur de retour de méthode. Ou bien, la valeur de retour d’une propriété ou d’une méthode a été demandée, mais elle ne retourne pas de valeur.
Le type de données ou la valeur du paramètre « context » n’est sp_OACreate pas valide. (0x8004275B) La valeur du paramètre de contexte doit être : 1, 4 ou 5.

Pour plus d’informations sur le traitement des codes de retour HRESULT, consultez les codes de retour OLE Automation et les informations d’erreur.

autorisations

Nécessite l’appartenance au rôle serveur fixe sysadmin ou l’autorisation d’exécution directement sur cette procédure stockée. L’option de configuration du serveur Procédures Ole Automation doit être activée pour utiliser n’importe quelle procédure système liée à OLE Automation.

Exemples

L'exemple suivant affiche des informations d'erreur OLE Automation.

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;