SQLGetDiagField
Der SQL Server-Native Client-ODBC-Treiber legt die folgenden zusätzlichen Diagnosefelder für SQLGetDiagField fest. Diese Felder unterstützen eine umfangreiche Fehlerberichterstellung für SQL Server-Anwendungen und sind in allen Diagnosedatensätzen verfügbar, die für verbundene ODBC-Verbindungshandles und ODBC-Anweisungshandles generiert werden. Die Felder werden in sqlncli.h definiert.
Diagnosedatensatzfeld |
Beschreibung |
---|---|
SQL_DIAG_SS_LINE |
Meldet die Zeilennummer einer gespeicherten Prozedur, die einen Fehler verursacht. Der Wert von SQL_DIAG_SS_LINE ist nur aussagekräftig, wenn SQL_DIAG_SS_PROCNAME einen Wert zurückgibt. Der Wert wird als 16-Bit-Ganzzahl ohne Vorzeichen zurückgegeben. |
SQL_DIAG_SS_MSGSTATE |
Der Status einer Fehlermeldung. Informationen über den Status der Fehlermeldung finden Sie unter RAISERROR. Der Wert wird als 32-Bit-Ganzzahl mit Vorzeichen zurückgegeben. |
SQL_DIAG_SS_PROCNAME |
Der Name der gespeicherten Prozedur, die einen Fehler generiert, falls zutreffend. Der Wert wird als Zeichenfolge zurückgegeben. Die Länge der Zeichenfolge (in Zeichen) hängt von der SQL Server-Version ab. Sie kann bestimmt werden, indem die SQLGetInfo-Funktion, die den Wert für SQL_MAX_PROCEDURE_NAME_LEN anfordert, aufgerufen wird. |
SQL_DIAG_SS_SEVERITY |
Der Schweregrad der zugehörigen Fehlermeldung. Der Wert wird als 32-Bit-Ganzzahl mit Vorzeichen zurückgegeben. |
SQL_DIAG_SS_SRVNAME |
Der Name des Servers, auf dem der Fehler aufgetreten ist. Der Wert wird als Zeichenfolge zurückgegeben. Die Länge der Zeichenfolge (in Zeichen) wird in sqlncli.h durch das SQL_MAX_SQLSERVERNAME-Makro definiert. |
SQL Server-spezifische Diagnosefelder, die Zeichendaten, SQL_DIAG_SS_PROCNAME und SQL_DIAG_SS_SRVNAME enthalten, geben diese Daten an den Client mit NULL-Terminierung oder als ANSI- bzw. Unicode-Zeichenfolgen zurück. Falls notwendig sollte die Anzahl von Zeichen der Zeichenbreite entsprechend angepasst werden. Alternativ kann die korrekte Länge der Programmvariablen mit einem übertragbaren C-Datentyp wie TCHAR oder SQLTCHAR sichergestellt werden.
Der SQL Server Native Client ODBC-Treiber meldet die folgenden zusätzlichen dynamischen Funktionscodes, die die zuletzt versuchte SQL Server-Anweisung identifizieren. Der dynamische Funktionscode wird im Header (Datensatz 0) des Diagnosedatensatzes zurückgegeben und ist daher bei jeder Ausführung verfügbar (unabhängig davon, ob diese erfolgreich ist oder nicht).
Dynamischer Funktionscode |
Quelle |
---|---|
SQL_DIAG_DFC_SS_ALTER_DATABASE |
ALTER DATABASE-Anweisung |
SQL_DIAG_DFC_SS_CHECKPOINT |
CHECKPOINT-Anweisung |
SQL_DIAG_DFC_SS_CONDITION |
Ein Fehler ist in der WHERE-Klausel oder der HAVING-Klausel einer Anweisung aufgetreten. |
SQL_DIAG_DFC_SS_CREATE_DATABASE |
CREATE DATABASE-Anweisung |
SQL_DIAG_DFC_SS_CREATE_DEFAULT |
CREATE DEFAULT-Anweisung |
SQL_DIAG_DFC_SS_CREATE_PROCEDURE |
CREATE PROCEDURE-Anweisung |
SQL_DIAG_DFC_SS_CREATE_RULE |
CREATE RULE-Anweisung |
SQL_DIAG_DFC_SS_CREATE_TRIGGER |
CREATE TRIGGER-Anweisung |
SQL_DIAG_DFC_SS_CURSOR_DECLARE |
DECLARE CURSOR-Anweisung |
SQL_DIAG_DFC_SS_CURSOR_OPEN |
OPEN-Anweisung |
SQL_DIAG_DFC_SS_CURSOR_FETCH |
FETCH-Anweisung |
SQL_DIAG_DFC_SS_CURSOR_CLOSE |
CLOSE-Anweisung |
SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR |
DEALLOCATE-Anweisung |
SQL_DIAG_DFC_SS_DBCC |
DBCC-Anweisung |
SQL_DIAG_DFC_SS_DENY |
DENY-Anweisung |
SQL_DIAG_DFC_SS_DROP_DATABASE |
DROP DATABASE-Anweisung |
SQL_DIAG_DFC_SS_DROP_DEFAULT |
DROP DEFAULT-Anweisung |
SQL_DIAG_DFC_SS_DROP_PROCEDURE |
DROP PROCEDURE-Anweisung |
SQL_DIAG_DFC_SS_DROP_RULE |
DROP RULE-Anweisung |
SQL_DIAG_DFC_SS_DROP_TRIGGER |
DROP TRIGGER-Anweisung |
SQL_DIAG_DFC_SS_DUMP_DATABASE |
BACKUP oder DUMP DATABASE-Anweisung |
SQL_DIAG_DFC_SS_DUMP_TABLE |
DUMP TABLE-Anweisung |
SQL_DIAG_DFC_SS_DUMP_TRANSACTION |
BACKUP oder DUMP TRANSACTION-Anweisung Dieser Wert wird auch für eine CHECKPOINT-Anweisung zurückgegeben, wenn die Datenbankoption trunc. log on chkpt. aktiviert ist. |
SQL_DIAG_DFC_SS_GOTO |
GOTO-Anweisung zur Ablaufsteuerung |
SQL_DIAG_DFC_SS_INSERT_BULK |
INSERT BULK-Anweisung |
SQL_DIAG_DFC_SS_KILL |
KILL-Anweisung |
SQL_DIAG_DFC_SS_LOAD_DATABASE |
LOAD oder RESTORE DATABASE-Anweisung |
SQL_DIAG_DFC_SS_LOAD_HEADERONLY |
LOAD oder RESTORE HEADERONLY-Anweisung |
SQL_DIAG_DFC_SS_LOAD_TABLE |
LOAD TABLE-Anweisung |
SQL_DIAG_DFC_SS_LOAD_TRANSACTION |
LOAD oder RESTORE TRANSACTION-Anweisung |
SQL_DIAG_DFC_SS_PRINT |
PRINT-Anweisung |
SQL_DIAG_DFC_SS_RAISERROR |
RAISERROR-Anweisung |
SQL_DIAG_DFC_SS_READTEXT |
READTEXT-Anweisung |
SQL_DIAG_DFC_SS_RECONFIGURE |
RECONFIGURE-Anweisung |
SQL_DIAG_DFC_SS_RETURN |
RETURN-Anweisung zur Ablaufsteuerung |
SQL_DIAG_DFC_SS_SELECT_INTO |
SELECT INTO-Anweisung |
SQL_DIAG_DFC_SS_SET |
SET-Anweisung (generisch, alle Optionen) |
SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT |
SET IDENTITY_INSERT-Anweisung |
SQL_DIAG_DFC_SS_SET_ROW_COUNT |
SET ROWCOUNT-Anweisung |
SQL_DIAG_DFC_SS_SET_STATISTICS |
SET STATISTICS IO- oder SET STATISTICS TIME-Anweisung |
SQL_DIAG_DFC_SS_SET_TEXTSIZE |
SET TEXTSIZE-Anweisung |
SQL_DIAG_DFC_SS_SETUSER |
SETUSER-Anweisung |
SQL_DIAG_DFC_SS_SET_XCTLVL |
SET TRANSACTION ISOLATION LEVEL-Anweisung |
SQL_DIAG_DFC_SS_SHUTDOWN |
SHUTDOWN-Anweisung |
SQL_DIAG_DFC_SS_TRANS_BEGIN |
BEGIN TRAN-Anweisung |
SQL_DIAG_DFC_SS_TRANS_COMMIT |
COMMIT TRAN-Anweisung |
SQL_DIAG_DFC_SS_TRANS_PREPARE |
Vorbereiten, um einen Commit für eine verteilte Transaktion auszuführen |
SQL_DIAG_DFC_SS_TRANS_ROLLBACK |
ROLLBACK TRAN-Anweisung |
SQL_DIAG_DFC_SS_TRANS_SAVE |
SAVE TRAN-Anweisung |
SQL_DIAG_DFC_SS_TRUNCATE_TABLE |
TRUNCATE TABLE-Anweisung |
SQL_DIAG_DFC_SS_UPDATE_STATISTICS |
UPDATE STATISTICS-Anweisung |
SQL_DIAG_DFC_SS_UPDATETEXT |
UPDATETEXT-Anweisung |
SQL_DIAG_DFC_SS_USE |
USE-Anweisung |
SQL_DIAG_DFC_SS_WAITFOR |
WAITFOR-Anweisung zur Ablaufsteuerung |
SQL_DIAG_DFC_SS_WRITETEXT |
WRITETEXT-Anweisung |
SQLGetDiagField und Tabellenwertparameter
SQLGetDiagField kann verwendet werden, um zwei Diagnosefelder abzurufen: SQL_DIAG_SS_TABLE_COLUMN_NUMBER und SQL_DIAG_SS_TABLE_ROW_NUMBER. Mithilfe dieser Felder können Sie bestimmen, welcher Wert den Fehler oder die Warnung im Zusammenhang mit dem Diagnosedatensatz verursacht hat.
Weitere Informationen zu Tabellenwertparametern finden Sie unter Tabellenwertparameter (ODBC).
Siehe auch
Konzepte
ODBC-API-Implementierungsdetails