次の方法で共有


SQLGetDiagField

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 のバージョンによって異なります。 これは、SQL_MAX_PROCEDURE_NAME_LENの値を要求する SQLGetInfo を呼び出すことによって決定できます。
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 ステートメント。 また、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 パラメーターと Table-Valued パラメーター

SQLGetDiagField を使用すると、SQL_DIAG_SS_TABLE_COLUMN_NUMBERとSQL_DIAG_SS_TABLE_ROW_NUMBERの 2 つの診断フィールドを取得できます。 これらのフィールドは、診断レコードに関連付けられたエラーまたは警告の原因となった値を特定するのに役立ちます。

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

こちらもご覧ください

SQLGetDiagField 関数
ODBC API 実装の詳細