sp_trace_create (Transact-SQL)
Gilt für: SQL Server
Erstellt eine Ablaufverfolgungsdefinition. Die neue Ablaufverfolgung befindet sich in einem angehaltenen Zustand.
Wichtig
Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen erweiterte Ereignisse.
Transact-SQL-Syntaxkonventionen
Syntax
sp_trace_create
[ @traceid = ] traceid OUTPUT
, [ @options = ] options
, [ @tracefile = ] N'tracefile'
[ , [ @maxfilesize = ] maxfilesize ]
[ , [ @stoptime = ] 'stoptime' ]
[ , [ @filecount = ] filecount ]
[ ; ]
Argumente
[ @traceid = ] traceid OUTPUT
Die von SQL Server der neuen Ablaufverfolgung zugewiesene Nummer. Alle vom Benutzer bereitgestellten Eingaben werden ignoriert. @traceid ist ein OUTPUT-Parameter vom Typ "int" mit einem Standardwert von NULL
. Der Benutzer verwendet den @traceid Wert, um die von dieser gespeicherten Prozedur definierte Ablaufverfolgung zu identifizieren, zu ändern und zu steuern.
[ @options = ] Optionen
Gibt die für die Ablaufverfolgung festgelegten Optionen an. @options ist int, ohne Standardeinstellung. Sie können eine Kombination dieser Optionen auswählen, indem Sie den Summenwert der ausgewählten Optionen angeben. Wenn Sie z. B. sowohl die Optionen TRACE_FILE_ROLLOVER
SHUTDOWN_ON_ERROR
als auch die @options aktivieren 6
möchten.
In der folgenden Tabelle werden die Optionen, Beschreibungen und die zugehörigen Werte aufgeführt.
Name der Option | Optionswert | Beschreibung |
---|---|---|
TRACE_FILE_ROLLOVER |
2 |
Gibt an, dass beim Erreichen des @filecount die aktuelle Ablaufverfolgungsdatei geschlossen und eine neue Datei erstellt wird. Alle neuen Datensätze werden in die neue Datei geschrieben. Die neue Datei hat denselben Namen wie die vorherige Datei, aber eine ganze Zahl wird angefügt, um die Reihenfolge anzugeben. Wenn z. B. die ursprüngliche Ablaufverfolgungsdatei benannt filename.trc ist, heißt filename_1.trc die nächste Ablaufverfolgungsdatei, die folgende Ablaufverfolgungsdatei filename_2.trc usw.Wenn weitere Ablaufverfolgungs-Rolloverdateien erstellt werden, erhöht sich der an die Dateinamen angefügte ganzzahlige Wert sequenziell. SQL Server verwendet den Standardwert von @filecount (5 MB), wenn diese Option angegeben wird, ohne einen Wert für @filecount anzugeben. |
SHUTDOWN_ON_ERROR |
4 |
Gibt an, dass sql Server heruntergefahren wird, wenn die Ablaufverfolgung aus irgendeinem Grund nicht in die Datei geschrieben werden kann. Diese Option ist beim Ausführen von Ablaufverfolgungen zur Sicherheitsüberwachung hilfreich. |
TRACE_PRODUCE_BLACKBOX |
8 |
Gibt an, dass ein Datensatz der letzten 5 MB von Vom Server erzeugten Ablaufverfolgungsinformationen vom Server gespeichert wird. TRACE_PRODUCE_BLACKBOX ist nicht mit allen anderen Optionen kompatibel. |
[ @tracefile = ] N'tracefile'
Gibt den Speicherort und dateinamen an, in den die Ablaufverfolgung geschrieben wird. @tracefile ist nvarchar(245) ohne Standard. @tracefile kann entweder ein lokales Verzeichnis (zN'C:\MSSQL\Trace\trace.trc'
. B. ) oder ein UNC zu einer Freigabe oder einem Pfad (zN'\\<servername>\<sharename>\<directory>\trace.trc'
. B. ) sein.
SQL Server fügt eine .trc
Erweiterung an alle Ablaufverfolgungsdateinamen an. Wenn die TRACE_FILE_ROLLOVER
Option und ein @filecount angegeben werden, erstellt SQL Server eine neue Ablaufverfolgungsdatei, wenn die ursprüngliche Ablaufverfolgungsdatei auf die maximale Größe zunimmt. Die neue Datei hat denselben Namen wie die originale Datei, aber _n wird angefügt, um die Reihenfolge anzugeben, beginnend mit 1
. Wenn beispielsweise die erste Ablaufverfolgungsdatei benannt filename.trc
ist, wird die zweite Ablaufverfolgungsdatei benannt filename_1.trc
.
Wenn Sie die TRACE_FILE_ROLLOVER
Option verwenden, wird empfohlen, keine Unterstriche im ursprünglichen Namen der Ablaufverfolgungsdatei zu verwenden. Bei Verwendung von Unterstrichen tritt Folgendes auf:
SQL Server Profiler lädt Sie nicht automatisch oder fordert Sie auf, die Rolloverdateien zu laden (wenn eine dieser Dateirollover-Optionen konfiguriert ist).
Die sys.fn_trace_gettable-Funktion lädt keine Rolloverdateien (wenn mithilfe des Arguments @number_files angegeben), wobei der ursprüngliche Dateiname mit einem Unterstrich und einem numerischen Wert endet. (Dies gilt nicht für den Unterstrich und die Nummer, die automatisch angefügt wird, wenn eine Datei überrollt wird.)
Hinweis
Um diese beiden Probleme zu umgehen, können Sie die Dateien umbenennen und die Unterstriche im ursprünglichen Dateinamen entfernen. Wenn beispielsweise die Ursprüngliche Datei benannt my_trace.trc
ist und die Rolloverdatei benannt my_trace_1.trc
ist, können Sie die Dateien mytrace.trc
in und mytrace_1.trc
vor dem Öffnen der Dateien in SQL Server Profiler umbenennen.
@tracefile kann nicht angegeben werden, wenn die TRACE_PRODUCE_BLACKBOX
Option verwendet wird.
[ @maxfilesize = ] maxfilesize
Gibt die Maximalgröße in Megabyte (MB) an, auf die eine Ablaufverfolgungsdatei vergrößert werden kann. @maxfilesize ist großint, mit einem Standardwert von 5
.
Wenn dieser Parameter ohne die TRACE_FILE_ROLLOVER
Option angegeben wird, beendet die Ablaufverfolgung die Aufzeichnung in der Datei, wenn der verwendete Speicherplatz die durch @maxfilesize angegebene Menge überschreitet.
[ @stoptime = ] 'stoptime'
Gibt das Datum und die Uhrzeit an, zu denen die Ablaufverfolgung beendet wird. @stoptime ist "datetime" mit der Standardeinstellung "NULL
. Wenn NULL
die Ablaufverfolgung ausgeführt wird, bis sie manuell beendet wird oder bis der Server heruntergefahren wird.
Wenn sowohl @stoptime als auch @maxfilesize angegeben werden und TRACE_FILE_ROLLOVER
nicht angegeben werden, wird die Ablaufverfolgung tops, wenn entweder die angegebene Stoppzeit oder die maximale Dateigröße erreicht ist. Wenn @stoptime, @maxfilesize und TRACE_FILE_ROLLOVER
angegeben werden, hält die Ablaufverfolgung zur angegebenen Stoppzeit an, vorausgesetzt, die Ablaufverfolgung füllt das Laufwerk nicht aus.
[ @filecount = ] 'filecount'
Gibt die maximale Anzahl von Ablaufverfolgungsdateien an, die mit dem gleichen Basisdateinamen verwaltet werden sollen. @filecount ist int, größer als 1
. Dieser Parameter ist nur gültig, wenn die TRACE_FILE_ROLLOVER
Option angegeben ist. Wenn @filecount angegeben wird, versucht SQL Server, nicht mehr als @filecount Ablaufverfolgungsdateien zu verwalten, indem die älteste Ablaufverfolgungsdatei gelöscht wird, bevor eine neue Ablaufverfolgungsdatei geöffnet wird. SQL Server verfolgt das Alter von Ablaufverfolgungsdateien, indem eine Zahl an den Basisdateinamen angefügt wird.
Wenn beispielsweise der parameter @tracefile als C:\mytrace
angegeben wird, ist eine Datei mit dem Namen C:\mytrace_123.trc
älter als eine Datei mit dem Namen C:\mytrace_124.trc
. Wenn @filecount auf festgelegt 2
ist, löscht SQL Server die Datei C:\mytrace_123.trc
vor dem Erstellen der Ablaufverfolgungsdatei C:\mytrace_125.trc
.
SQL Server versucht nur einmal, jede Datei zu löschen und kann keine Datei löschen, die von einem anderen Prozess verwendet wird. Wenn daher eine andere Anwendung mit Ablaufverfolgungsdateien arbeitet, während die Ablaufverfolgung ausgeführt wird, belässt SQL Server diese Ablaufverfolgungsdateien möglicherweise im Dateisystem.
Rückgabecodewerte
In der folgenden Tabelle werden die Codewerte beschrieben, die Sie nach Abschluss der gespeicherten Prozedur abrufen können.
Rückgabecode | Beschreibung |
---|---|
0 |
Kein Fehler. |
1 |
Unbekannter Fehler. |
10 |
Ungültige Optionen. Wird zurückgegeben, wenn angegebene Optionen inkompatibel sind. |
12 |
Datei nicht erstellt. |
13 |
Nicht genügend Arbeitsspeicher. Wird zurückgegeben, wenn nicht genügend Arbeitsspeicher zum Ausführen der angegebenen Aktion vorhanden ist. |
14 |
Ungültige Beendigungszeit. Wird zurückgegeben, wenn die angegebene Beendigungszeit bereits verstrichen ist. |
15 |
Ungültige Parameter. Wird zurückgegeben, wenn der Benutzer inkompatible Parameter angegeben hat. |
Hinweise
sp_trace_create
ist eine gespeicherte SQL Server-Prozedur, die viele der aktionen ausführt, die zuvor von xp_trace_*
erweiterten gespeicherten Prozeduren ausgeführt wurden, die in früheren Versionen von SQL Server verfügbar sind. Verwenden Sie sp_trace_create
anstelle von:
xp_trace_addnewqueue
xp_trace_setqueuecreateinfo
xp_trace_setqueuedestination
sp_trace_create
erstellt nur eine Ablaufverfolgungsdefinition. Diese gespeicherte Prozedur kann nicht verwendet werden, um eine Ablaufverfolgung zu starten oder zu ändern.
Parameter aller gespeicherten SQL Trace-Prozeduren (sp_trace_*
) werden streng eingegeben. Wenn diese Parameter nicht mit den richtigen Datentypen für Eingabeparameter aufgerufen werden, wie in der Argumentbeschreibung angegeben, gibt die gespeicherte Prozedur einen Fehler zurück.
For sp_trace_create
, the SQL Server service account must have write permission on the trace file folder. Wenn das SQL Server-Dienstkonto kein Administrator auf dem Computer ist, auf dem sich die Ablaufverfolgungsdatei befindet, müssen Sie explizit schreibberechtigungen für das SQL Server-Dienstkonto erteilen.
Hinweis
Sie können die mit einer Tabelle erstellte sp_trace_create
Ablaufverfolgungsdatei automatisch mithilfe der fn_trace_gettable
Systemfunktion laden. Weitere Informationen finden Sie unter sys.fn_trace_gettable.
Ein Beispiel für die Verwendung gespeicherter Ablaufverfolgungsprozeduren finden Sie unter Erstellen einer Ablaufverfolgung.
TRACE_PRODUCE_BLACKBOX
hat die folgenden Merkmale:
Es ist eine Rolloverablaufverfolgung. Die Standardeinstellung @filecount ist 2, kann jedoch vom Benutzer mit @filecount Option überschrieben werden.
Die Standard -@maxfilesize wie bei anderen Ablaufverfolgungen beträgt 5 MB und kann geändert werden.
Es kann kein Dateiname angegeben werden. Die Datei wird gespeichert als:
N'%SQLDIR%\MSSQL\DATA\blackbox.trc'
.Nur die folgenden Ereignisse und deren Spalten sind in der Ablaufverfolgung enthalten:
- RPC-Start
- Batchstart
- Exception
- Aufmerksamkeit
Ereignisse oder Spalten können dieser Ablaufverfolgung nicht hinzugefügt oder daraus entfernt werden.
Filter können für diese Ablaufverfolgung nicht angegeben werden.
Berechtigungen
Erfordert DIE ALTER TRACE-Berechtigung.