SQLGetDiagField

適用対象:SQL ServerAzure SQL データベースAzure SQL Managed InstanceAzure Synapse Analytics

SQL Server Native Client ODBC ドライバーは、 SQLGetDiagField の次の追加診断フィールドを指定します。 これらのフィールドは、SQL Server アプリケーションの豊富なエラー報告をサポートしており、接続されている ODBC 接続ハンドルと ODBC ステートメント ハンドルで生成されるすべての診断レコードで使用できます。 これらのフィールドは、sqlncli.h で定義されています。

診断レコードのフィールド 説明
SQL_DIAG_SS_LINE ストアド プロシージャのエラーが発生した行番号を報告します。 SQL_DIAG_SS_LINE の値は、SQL_DIAG_SS_PROCNAME に値が返される場合にのみ意味があります。 この値は、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_DIAG_SS_PROCNAME、SQL_DIAG_SS_SRVNAMEを含む SQL Server 固有の診断フィールドは、そのデータを null 終端文字列、ANSI 文字列、または Unicode 文字列としてクライアントに返します。 必要に応じて、文字数を文字幅で調整する必要があります。 また、TCHAR や SQLTCHAR などの移植可能な C データ型を使用して、プログラム変数の適切な長さを保証できます。

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 STATEMENTです。 また、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 または RESTOREDATABASE 文
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 トランザクション文
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 SET STATISTICS IO または SETSET 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 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の 2 つの診断フィールドを取得できます。 これらのフィールドは、診断レコードに関連するエラーまたは警告の原因となった値を特定するのに役立ちます。

テーブル値パラメーターの詳細については、「 Table-Valued Parameters (ODBC)」を参照してください。