Compartir a través de


Detalles de errores de SQL Server

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Descargar controlador OLE DB

OLE DB Driver for SQL Server define la interfaz de errores específica de proveedor ISQLServerErrorInfo. La interfaz devuelve más detalles acerca de un error de SQL Server y resulta útil cuando se produce un error en la ejecución del comando o en operaciones de 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, tal como se muestra en el ejemplo de código siguiente. (No hay ninguna necesidad de obtener ISQLErrorInfo). ISQLErrorInfo e ISQLServerErrorInfo son objetos de error de OLE DB personalizados; ISQLServerErrorInfo es la interfaz que se usa para obtener información de errores de 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 consiste en llamar al método QueryInterface en un puntero ISQLErrorInfo ya obtenido. Tenga en cuenta que, como ISQLServerErrorInfo contiene un superconjunto de la información disponible en ISQLErrorInfo, conviene pasar 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 cadena. 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 siguiente manera.

Member Descripción
pwszMessage Mensaje de error de SQL Server. Idéntico a la cadena que se devuelve en IErrorInfo::GetDescription.
pwszServer Nombre de la instancia de SQL Server en la sesión.
pwszProcedure Si procede, nombre del procedimiento donde se ha producido el error. De lo contrario, una cadena vacía.
lNative Número del error nativo de SQL Server. Idéntico al valor que se devuelve 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 Si procede, número de línea del procedimiento almacenado donde se produjo el error.

Consulte también

Errores
RAISERROR (Transact-SQL)