Compartir a través de


Detalle del error de SQL Server

El proveedor OLE DB de SQL Server Native Client define la interfaz de error específica del proveedor ISQLServerErrorInfo. La interfaz devuelve más detalles sobre un error de SQL Server y es útil cuando se produce un error en la ejecución de comandos o las operaciones del conjunto de filas.

Hay dos maneras de obtener acceso a la interfaz ISQLServerErrorInfo .

El consumidor puede llamar a IErrorRecords::GetCustomerErrorObject para obtener un puntero ISQLServerErrorInfo , como se muestra en el ejemplo de código siguiente. (No es necesario obtener ISQLErrorInfo).ISQLErrorInfo e ISQLServerErrorInfo son objetos de error OLE DB personalizados, con ISQLServerErrorInfo como la interfaz que se va a usar para obtener información de los errores del servidor, incluidos detalles como el nombre del procedimiento y los números de línea.

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

Otra manera de obtener un puntero ISQLServerErrorInfo es llamar al método QueryInterface en un puntero ISQLErrorInfo ya obtenido. Tenga en cuenta que, dado que ISQLServerErrorInfo contiene un superconjunto de la información disponible en ISQLErrorInfo, tiene sentido ir directamente a ISQLServerErrorInfo a través de GetCustomerErrorObject.

La interfaz ISQLServerErrorInfo expone una función miembro, ISQLServerErrorInfo::GetErrorInfo. La función devuelve un puntero a una estructura SSERRORINFO y un puntero a un búfer de cadenas. Ambos punteros hacen referencia a la memoria que el consumidor debe desasignar mediante el método IMalloc::Free .

El consumidor interpreta los miembros de la estructura SSERRORINFO de la manera siguiente.

Miembro Descripción
pwszMessage Mensaje de error de SQL Server. Idéntico a la cadena devuelta en IErrorInfo::GetDescription.
pwszServer Nombre de la instancia de SQL Server para la sesión.
pwszProcedure Si procede, el nombre del procedimiento en el que se originó el error. Una cadena vacía de lo contrario.
lNative Número de error nativo de SQL Server. Idéntico al valor devuelto en el parámetro plNativeError de ISQLErrorInfo::GetSQLInfo.
bState Estado de un mensaje de error de SQL Server.
bClass Gravedad de un mensaje de error de SQL Server.
wLineNumber Cuando procede, el número de línea de un procedimiento almacenado en el que se produjo el error.

Véase también

Errores
RAISERROR (Transact-SQL)