SQLGetDiagField

SQL Server Native Client ODBC 驱动程序为 指定以下附加诊断字段SQLGetDiagField。 这些字段支持为SQL Server应用程序提供丰富的错误报告,可在连接 ODBC 连接句柄和 ODBC 语句句柄上生成的所有诊断记录中使用。 这些字段在 sqlncli.h 中定义。

诊断记录字段 说明
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的版本。 可以通过调用 SQLGetInfo 来请求SQL_MAX_PROCEDURE_NAME_LEN的值来确定该值。
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 语句。 如果 trunc.log on chkpt. database 选项处于打开状态,则还会为 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 和表值参数

SQLGetDiagField 可用于检索两个诊断字段:SQL_DIAG_SS_TABLE_COLUMN_NUMBER和SQL_DIAG_SS_TABLE_ROW_NUMBER。 这些字段可帮助您确定哪个值导致了与诊断记录关联的错误或警告。

有关表值参数的详细信息,请参阅 表值参数 (ODBC)

另请参阅

SQLGetDiagField 函数
ODBC API 实现细节