Partager via


Détails de l’erreur SQL Server

Le fournisseur OLE DB SQL Server Native Client définit l’interface d’erreur spécifique au fournisseur ISQLServerErrorInfo. L’interface retourne plus de détails sur une erreur SQL Server et est précieuse lorsque les opérations d’exécution de commande ou d’ensemble de lignes échouent.

Il existe deux façons d’obtenir l’accès à l’interface ISQLServerErrorInfo .

Le consommateur peut appeler IErrorRecords ::GetCustomerErrorObject pour obtenir un pointeur ISQLServerErrorInfo , comme indiqué dans l’exemple de code suivant. (Il n’est pas nécessaire d’obtenir ISQLErrorInfo.) ISQLErrorInfo et ISQLServerErrorInfo sont des objets d’erreur OLE DB personnalisés, avec ISQLServerErrorInfo étant l’interface à utiliser pour obtenir des informations sur les erreurs de serveur, notamment des détails tels que le nom de procédure et les numéros de ligne.

// Get the SQL Server custom error object.  
if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(  
   nRec, IID_ISQLServerErrorInfo,  
   (IUnknown**)&pISQLServerErrorErrorInfo)))  

Une autre façon d’obtenir un pointeur ISQLServerErrorInfo consiste à appeler la méthode QueryInterface sur un pointeur ISQLErrorInfo déjà obtenu. Notez que, étant donné que ISQLServerErrorInfo contient un super-ensemble des informations disponibles à partir d’ISQLErrorInfo, il est judicieux d’accéder directement à ISQLServerErrorInfo via GetCustomerErrorObject.

L’interface ISQLServerErrorInfo expose une fonction membre, ISQLServerErrorInfo ::GetErrorInfo. La fonction retourne un pointeur vers une structure SSERRORINFO et un pointeur vers une mémoire tampon de chaîne. Les deux pointeurs référencent la mémoire que le consommateur doit libérer à l’aide de la méthode IMalloc ::Free .

Les membres de la structure SSERRORINFO sont interprétés par le consommateur comme suit.

Membre Descriptif
pwszMessage Message d’erreur SQL Server. Identique à la chaîne retournée dans IErrorInfo ::GetDescription.
pwszServer Nom de l’instance de SQL Server pour la session.
pwszProcedure Le cas échéant, le nom de la procédure dans laquelle l’erreur provient. Chaîne vide dans le cas contraire.
lNative Numéro d’erreur natif SQL Server. Identique à la valeur retournée dans le paramètre plNativeError de ISQLErrorInfo ::GetSQLInfo.
bState État d’un message d’erreur SQL Server.
bClass Gravité d’un message d’erreur SQL Server.
wLineNumber Le cas échéant, numéro de ligne d’une procédure stockée sur laquelle l’erreur s’est produite.

Voir aussi

Erreurs
RAISERROR (Transact-SQL)