Détail des erreurs SQL Server
Le fournisseur OLE DB SQL Server Native Client définit l'interface d'erreur ISQLServerErrorInfo spécifique au fournisseur. L'interface retourne davantage de détails sur une erreur SQL Server et s'avère utile en cas d'échec de l'exécution d'une commande ou d'opérations d'ensemble de lignes.
Vous pouvez accéder à l'interface ISQLServerErrorInfo de deux manières.
Le consommateur peut appeler IErrorRecords::GetCustomerErrorObject pour obtenir un pointeur ISQLServerErrorInfo, comme indiqué dans l'exemple de code suivant. (Il est inutile d'obtenir ISQLErrorInfo.) ISQLErrorInfo et ISQLServerErrorInfo sont des objets d'erreur OLE DB personnalisés, ISQLServerErrorInfo étant l'interface à utiliser pour obtenir des informations sur les erreurs de serveur, notamment des détails sur le nom de la 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)))
L'autre méthode permettant d'obtenir un pointeur ISQLServerErrorInfo consiste à appeler la méthode QueryInterface sur un pointeur ISQLErrorInfo qui a déjà été obtenu. Étant donné qu'ISQLServerErrorInfo contient un surensemble des informations disponibles à partir d'ISQLErrorInfo, il est logique de passer directement à ISQLServerErrorInfo via GetCustomerErrorObject.
L'interface ISQLServerErrorInfo expose une fonction membre, ISQLServerErrorInfo::GetErrorInfo. La fonction retourne un pointeur à une structure SSERRORINFO et un pointeur à une mémoire tampon de chaîne. Les deux pointeurs font référence à 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 |
Description |
---|---|
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 |
S'il y a lieu, nom de la procédure d'où provient l'erreur. Sinon, une chaîne vide. |
lNative |
Numéro d'erreur natif SQL Server. Identique à la valeur retournée dans le paramètre plNativeError d'ISQLErrorInfo::GetSQLInfo. |
bState |
État d'un message d'erreur SQL Server. |
bClass |
Gravité d'un message d'erreur SQL Server. |
wLineNumber |
S'il y a lieu, numéro de ligne d'une procédure stockée sur laquelle s'est produite l'erreur. |