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)」を参照してください。