Angeben einer Breakpointaktion
Die Breakpointaktion Bei Treffer gibt einen benutzerdefinierten Task an, den der Transact-SQL-Debugger für einen Breakpoint ausführt. Wenn die angegebene Trefferanzahl erreicht ist und alle angegebenen Breakpointbedingungen erfüllt sind, führt der Debugger die für den Breakpoint angegebene Aktion aus.
Überlegungen zur Aktion
Die Standardaktion für einen Breakpoint besteht darin, die Ausführung zu unterbrechen, wenn die Trefferanzahl- und die Breakpointbedingung erfüllt sind. Der primäre Zweck einer Bei Treffer-Aktion im Transact-SQL-Debugger ist es hingegen, durch Angeben einer Ausgabemeldung Informationen in das Debuggerausgabefenster auszugeben.
Ausgabemeldungen werden mit der Option Meldung drucken festgelegt und als Textzeichenfolge angegeben, die Ausdrücke mit Informationen aus dem zu debuggenden Transact-SQL enthalten. Mögliche Ausdrücke:
Ein Transact-SQL-Ausdruck in geschweiften Klammern ({}). Die Ausdrücke können Transact-SQL-Variablen, -Parameter und integrierte Funktionen enthalten. Beispiele sind {@MyVariable}, {@NameParameter}, {@@SPID} oder {SERVERPROPERTY ('ProcessID')}.
Eines der folgenden Schlüsselwörter:
$ADDRESS gibt den Namen der gespeicherten Prozedur oder benutzerdefinierten Funktion zurück, in der der Breakpoint festgelegt ist. Wenn der Breakpoint im Editorfenster festgelegt wird, gibt $ADDRESS den Namen der Skriptdatei zurück, die bearbeitet wird. $ADDRESS und $FUNCTION geben im Transact-SQL-Debugger die gleichen Informationen zurück.
$CALLER gibt den Namen der Einheit des Transact-SQL-Codes zurück, in der eine gespeicherte Prozedur oder eine Funktion aufgerufen wurde. Wenn sich der Breakpoint im Editorfenster befindet, gibt $CALLER <No caller available> zurück. Wenn sich der Breakpoint in einer gespeicherten Prozedur oder benutzerdefinierten Funktion befindet, die vom Code im Editorfenster aufgerufen wird, gibt $CALLER den Namen der Datei zurück, die bearbeitet wird. Wenn sich der Breakpoint in einer gespeicherten Prozedur oder benutzerdefinierten Funktion befindet, die von einer anderen gespeicherten Prozedur oder Funktion aufgerufen wird, gibt $CALLER den Namen der aufrufenden Prozedur bzw. Funktion zurück.
$CALLSTACK gibt die Aufrufliste von Funktionen in der Kette zurück, die die aktuelle gespeicherte Prozedur oder benutzerdefinierte Funktion aufgerufen haben. Wenn sich der Breakpoint im Editorfenster befindet, gibt $CALLSTACK den Namen der Skriptdatei zurück, die bearbeitet wird.
$FUNCTION gibt den Namen der gespeicherten Prozedur oder benutzerdefinierten Funktion zurück, in der der Breakpoint festgelegt ist. Wenn der Breakpoint im Editorfenster festgelegt wird, gibt $FUNCTION den Namen der Skriptdatei zurück, die bearbeitet wird.
$PID und $PNAME geben die ID und den Namen des Betriebssystemprozesses zurück, der die Instanz des Datenbankmoduls ausführt, in dem das Transact-SQL ausgeführt wird. $PID gibt die gleiche ID wie SERVERPROPERTY('ProcessID') zurück, jedoch ist $PID ein Hexadezimalwert, während SERVERPROPERTY('ProcessID') ein Dezimalwert ist.
$TID und $TNAME geben die ID und den Namen des Betriebssystemthreads zurück, der den Transact-SQL-Batch ausführt. Der Thread ist dem Prozess zugeordnet, der die Instanz des Datenbankmoduls ausführt. $TID gibt den gleichen Wert wie SELECT kpid FROM sys.sysprocesses WHERE spid = @@SPID zurück, jedoch ist $TID ein Hexadezimalwert, während kpid ein Dezimalwert ist.
Sie können auch den umgekehrten Schrägstrich (\) als Escapezeichen verwenden, um geschweifte Klammern und umgekehrte Schrägstriche in der Meldung zuzulassen: \{, \}, und \\.
So geben Sie eine Bei Treffer-Aktion an
Klicken Sie im Editor-Fenster mit der rechten Maustaste auf das Breakpointsymbol, und klicken Sie dann im Kontextmenü auf Bei Treffer.
- oder -
Klicken Sie im Breakpointfenster mit der rechten Maustaste auf das Breakpointsymbol, und klicken Sie dann im Kontextmenü auf Bei Treffer.
Wählen Sie im Dialogfeld Beim Erreichen eines Haltepunktes das gewünschte Verhalten aus:
Wählen Sie Meldung drucken aus, um im Debuggerausgabefenster eine Meldung auszugeben, wenn der Breakpoint erreicht wird.
Die Option Makro ausführen ist im Transact-SQL-Debugger nicht verfügbar und wird abgeblendet dargestellt.
Wählen Sie Ausführung fortsetzen aus, wenn die Ausführung nicht am Breakpoint unterbrochen werden soll. Diese Option ist nur aktiviert, wenn Sie die Option Meldung drucken ausgewählt haben.
Klicken Sie auf OK, um die Änderungen zu implementieren, oder auf Abbrechen, um den Vorgang zu beenden, ohne die Änderungen zu übernehmen.