SQLGetDiagField

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)

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 的版本。 可以通过调用 请求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)中返回,因此可在每次执行时(成功或失败)使用。

动态函数代码 Source
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 和表值参数

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

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

另请参阅

SQLGetDiagField 函数
ODBC API 实现细节