SQLGetDiagField
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Der ODBC-Treiber für SQL Server Native Client gibt die folgenden zusätzlichen Diagnosefelder für SQLGetDiagField an. Diese Felder unterstützen umfassende Fehlerberichte für SQL Server-Anwendungen und sind in allen Diagnosedatensätzen verfügbar, die bei verbundenen 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 Version des SQL Server 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 als null-beendete, ANSI- oder Unicode-Zeichenfolgen an den Client 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 ODBC-Treiber für SQL Server Native Client meldet die folgenden zusätzlichen dynamischen Funktionscodes, die die letzte 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 Wird auch für eine CHECKPOINT-Anweisung zurückgegeben, wenn die trunc. log auf chkpt. Datenbankoption 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 "Table-Valued Parameters (ODBC)".