SQL Server Native Client ODBC 驱动程序指定以下其他诊断字段 SQLGetDiagField。 这些字段支持 SQL Server 应用程序的丰富错误报告,并且可在连接 ODBC 连接句柄和 ODBC 语句句柄上生成的所有诊断记录中使用。 字段在 sqlncli.h 中定义。
| 诊断记录字段 | DESCRIPTION |
|---|---|
| SQL_DIAG_SS_LINE | 报告生成错误的存储过程的行号。 仅当SQL_DIAG_SS_PROCNAME返回值时,SQL_DIAG_SS_LINE的值才有意义。 该值以无符号 16 位整数的形式返回。 |
| SQL_DIAG_SS_MSGSTATE | 错误消息的状态。 有关错误消息状态的信息,请参阅 RAISERROR。 该值以有符号的 32 位整数的形式返回。 |
| SQL_DIAG_SS_PROCNAME | 生成错误的存储过程的名称(如果适用)。 该值以字符串的形式返回。 字符串(以字符为单位)的长度取决于 SQL Server 的版本。 可以通过调用请求SQL_MAX_PROCEDURE_NAME_LEN值的 SQLGetInfo 来确定它。 |
| SQL_DIAG_SS_SEVERITY | 关联的错误消息的严重性级别。 该值以有符号的 32 位整数的形式返回。 |
| SQL_DIAG_SS_SRVNAME | 发生错误的服务器的名称。 该值以字符串的形式返回。 字符串(以字符为单位)的长度由 sqlncli.h 中的SQL_MAX_SQLSERVERNAME宏定义。 |
SQL Server 特定的诊断字段,其中包含字符数据、SQL_DIAG_SS_PROCNAME和SQL_DIAG_SS_SRVNAME,以 null 终止、ANSI 或 Unicode 字符串的形式返回到客户端。 如有必要,字符宽度应调整字符计数。 或者,可以使用可移植的 C 数据类型(如 TCHAR 或 SQLTCHAR)来确保正确的程序可变长度。
SQL Server Native Client ODBC 驱动程序报告以下用于标识上次尝试的 SQL Server 语句的附加动态函数代码。 动态函数代码在诊断记录集的标头(记录 0)中返回,因此在每次执行时都可用(成功或不成功)。
| 动态函数代码 | 来源 |
|---|---|
| SQL_DIAG_DFC_SS_ALTER_DATABASE | ALTER DATABASE 语句 |
| SQL_DIAG_DFC_SS_CHECKPOINT | CHECKPOINT 语句 |
| SQL_DIAG_DFC_SS_CONDITION | 语句的 WHERE 或 HAVING 子句中出现错误。 |
| SQL_DIAG_DFC_SS_CREATE_DATABASE | CREATE DATABASE 语句 |
| SQL_DIAG_DFC_SS_CREATE_DEFAULT | CREATE DEFAULT 语句 |
| SQL_DIAG_DFC_SS_CREATE_PROCEDURE | CREATE PROCEDURE 语句 |
| SQL_DIAG_DFC_SS_CREATE_RULE | CREATE RULE 语句 |
| SQL_DIAG_DFC_SS_CREATE_TRIGGER | CREATE TRIGGER 语句 |
| SQL_DIAG_DFC_SS_CURSOR_DECLARE | DECLARE CURSOR 语句 |
| SQL_DIAG_DFC_SS_CURSOR_OPEN | OPEN 语句 |
| SQL_DIAG_DFC_SS_CURSOR_FETCH | FETCH 语句 |
| SQL_DIAG_DFC_SS_CURSOR_CLOSE | CLOSE 语句 |
| SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR | DEALLOCATE 语句 |
| SQL_DIAG_DFC_SS_DBCC | DBCC 语句 |
| SQL_DIAG_DFC_SS_DENY | DENY 语句 |
| SQL_DIAG_DFC_SS_DROP_DATABASE | DROP DATABASE 语句 |
| SQL_DIAG_DFC_SS_DROP_DEFAULT | DROP DEFAULT 语句 |
| SQL_DIAG_DFC_SS_DROP_PROCEDURE | DROP PROCEDURE 语句 |
| SQL_DIAG_DFC_SS_DROP_RULE | DROP RULE 语句 |
| SQL_DIAG_DFC_SS_DROP_TRIGGER | DROP TRIGGER 语句 |
| SQL_DIAG_DFC_SS_DUMP_DATABASE | BACKUP 或 DUMP DATABASE 语句 |
| SQL_DIAG_DFC_SS_DUMP_TABLE | DUMP TABLE 语句 |
| SQL_DIAG_DFC_SS_DUMP_TRANSACTION | BACKUP 或 DUMP TRANSACTION 语句。 如果 chkpt 上的trunc. log 为 CHECKPOINT 语句返回。数据库选项处于打开状态。 |
| SQL_DIAG_DFC_SS_GOTO | GOTO 控制流语句 |
| SQL_DIAG_DFC_SS_INSERT_BULK | INSERT BULK 语句 |
| SQL_DIAG_DFC_SS_KILL | KILL 语句 |
| SQL_DIAG_DFC_SS_LOAD_DATABASE | LOAD 或 RESTORE DATABASE 语句 |
| SQL_DIAG_DFC_SS_LOAD_HEADERONLY | LOAD 或 RESTORE HEADERONLY 语句 |
| SQL_DIAG_DFC_SS_LOAD_TABLE | LOAD TABLE 语句 |
| SQL_DIAG_DFC_SS_LOAD_TRANSACTION | LOAD 或 RESTORE TRANSACTION 语句 |
| SQL_DIAG_DFC_SS_PRINT | PRINT 语句 |
| SQL_DIAG_DFC_SS_RAISERROR | RAISERROR 语句 |
| SQL_DIAG_DFC_SS_READTEXT | READTEXT 语句 |
| SQL_DIAG_DFC_SS_RECONFIGURE | RECONFIGURE 语句 |
| SQL_DIAG_DFC_SS_RETURN | RETURN 控制流语句 |
| SQL_DIAG_DFC_SS_SELECT_INTO | SELECT INTO 语句 |
| SQL_DIAG_DFC_SS_SET | SET 语句(泛型,所有选项) |
| SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT | SET IDENTITY_INSERT 语句 |
| SQL_DIAG_DFC_SS_SET_ROW_COUNT | SET ROWCOUNT 语句 |
| SQL_DIAG_DFC_SS_SET_STATISTICS | SET STATISTICS IO 或 SET STATISTICS TIME 语句 |
| SQL_DIAG_DFC_SS_SET_TEXTSIZE | SET TEXTSIZE 语句 |
| SQL_DIAG_DFC_SS_SETUSER | SETUSER 语句 |
| SQL_DIAG_DFC_SS_SET_XCTLVL | SET TRANSACTION ISOLATION LEVEL 语句 |
| SQL_DIAG_DFC_SS_SHUTDOWN | SHUTDOWN 语句 |
| SQL_DIAG_DFC_SS_TRANS_BEGIN | BEGIN TRAN 语句 |
| SQL_DIAG_DFC_SS_TRANS_COMMIT | COMMIT TRAN 语句 |
| SQL_DIAG_DFC_SS_TRANS_PREPARE | 准备提交分布式事务 |
| SQL_DIAG_DFC_SS_TRANS_ROLLBACK | ROLLBACK TRAN 语句 |
| SQL_DIAG_DFC_SS_TRANS_SAVE | SAVE TRAN 语句 |
| SQL_DIAG_DFC_SS_TRUNCATE_TABLE | TRUNCATE TABLE 语句 |
| SQL_DIAG_DFC_SS_UPDATE_STATISTICS | UPDATE STATISTICS 语句 |
| SQL_DIAG_DFC_SS_UPDATETEXT | UPDATETEXT 语句 |
| SQL_DIAG_DFC_SS_USE | USE 语句 |
| SQL_DIAG_DFC_SS_WAITFOR | WAITFOR 控制流语句 |
| SQL_DIAG_DFC_SS_WRITETEXT | WRITETEXT 语句 |
SQLGetDiagField 和 Table-Valued 参数
SQLGetDiagField 可用于检索两个诊断字段:SQL_DIAG_SS_TABLE_COLUMN_NUMBER和SQL_DIAG_SS_TABLE_ROW_NUMBER。 这些字段可帮助你确定导致与诊断记录关联的错误或警告的值。
有关表值参数的详细信息,请参阅表值参数(ODBC)。