SQLGetDiagField

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (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的版本。 可以通过调用 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 实现细节