ISQLServerErrorInfo::GetErrorInfo (Native Client OLE DB Provider)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)
重要
已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除 SQL Server Native Client(通常缩写为 SNAC)。 不建议在新的开发工作中使用 SQL Server Native Client OLE DB 提供程序(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 此后请切换到新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server。
返回指向包含 SQL Server 错误详细信息的 SQL Server Native Client OLE DB 提供程序 SSERRORINFO 结构的指针。
SQL Server Native Client OLE DB 提供程序定义 ISQLServerErrorInfo 错误接口。 此接口从 SQL Server 错误返回详细信息,包括其严重性和状态。
语法
HRESULT GetErrorInfo(
SSERRORINFO**ppSSErrorInfo,
OLECHAR**ppErrorStrings);
参数
ppSSErrorInfo[out]
指向 SSERRORINFO 结构的指针。 如果方法失败或者不存在与该错误关联的任何 SQL Server 信息,则访问接口不会分配任何内存,并且会确保 ppSSErrorInfo 参数在输出时为一个空指针 。
ppErrorStrings[out]
指向 Unicode 字符串指针的指针。 如果方法失败或者不存在与该错误关联的任何 SQL Server 信息,则访问接口不会分配任何内存,并且会确保 ppErrorStrings 参数在输出时为一个空指针 。 如果使用 IMalloc::Free 方法释放 ppErrorStrings 参数,则会释放所返回的 SSERRORINFO 结构的三个单个字符串成员,因为内存是按块进行分配的 。
返回代码值
S_OK
方法成功。
E_INVALIDARG
ppSSErrorInfo 或 ppErrorStrings 参数为 NULL。
E_OUTOFMEMORY
SQL Server Native Client OLE DB 访问接口无法分配足够的内存来完成请求。
注解
SQL Server Native Client OLE DB 访问接口为通过使用者传递的指针返回的 SSERRORINFO 和 OLECHAR 字符串分配内存。 当使用者不再需要访问错误数据时,使用者必须使用 IMalloc::Free 方法释放该内存 。
SSERRORINFO 结构的定义如下所示:
typedef struct tagSSErrorInfo
{
LPOLESTR pwszMessage;
LPOLESTR pwszServer;
LPOLESTR pwszProcedure;
LONG lNative;
BYTE bState;
BYTE bClass;
WORD wLineNumber;
}
SSERRORINFO;
成员 | 说明 |
---|---|
pwszMessage | 来自 SQL Server 的错误消息。 消息是通过 IErrorInfo::GetDescription 方法返回的 。 |
pwszServer | 在其上发生了该错误的 SQL Server 实例的名称。 |
pwszProcedure | 如果错误发生在存储过程中,则为生成该错误的存储过程的名称;否则,为空字符串。 |
lNative | SQL Server 错误号。 该错误号与在 ISQLErrorInfo::GetSQLInfo 方法的 plNativeError 参数中返回的错误号相同 。 |
bState | SQL Server 错误的状态。 |
bClass | SQL Server 错误的严重性。 |
wLineNumber | 如果适用,为生成错误消息的 SQL Server 存储过程的行。 如果与过程无关,则为默认值 1。 |
结构中的指针引用在 ppErrorStrings 参数中返回的字符串中的地址 。