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)。