Wenn ich die Konfiguration des Standard-Trace abfrage, wird aktiviert angezeigt:
exec sp_configure 'default trace enabled';
-->
name minimum maximum config_value run_value
default trace enabled 0 1 1 1
Wenn ich jedoch sys.traces
nach dem Pfad frage, wird ein leeres Rowset zurückgegeben:
select * from sys.traces;
Was könnte das Fehlen der aktivierten Ablaufverfolgung erklären?
sql-server
sql-server-2008-r2
trace
Andomar
quelle
quelle
select * from sys.traces
gibt ein leeres Rowset zurückEXEC sp_trace_setstatus @traceid = 1, @status = 0
bringt aber zurück,The default trace cannot be stopped or modified.
sodass ich nicht sicher bin, ob er gestoppt werden kann, es sei denn, es liegt ein Fehler vor, der die Ausführung verhindert. Irgendwas in den Fehlerprotokollen?Antworten:
Ich würde sagen, dass es eine starke Korrelation zwischen Ihrem Out-of-Space-Ereignis und der fehlenden Spur gibt. Beachten Sie, dass die
sp_configure
Option lediglich angibt, dass die Standardablaufverfolgung aktiviert ist. Dies bedeutet jedoch nicht, dass sie ausgeführt wird oder sogar vorhanden ist. Beachten Sie, dass diessys.traces
keine Tabelle, sondern eine Ansicht ist:Was bietet das
TABLE SYSTRACES
Rowset? Wie funktioniert es? Wie werden die Ergebnisse gefiltert? Deine Vermutung ist genauso gut wie meine. Es ist möglich, dass die Ablaufverfolgung noch vorhanden ist, sich jedoch in einem Zustand befindet, der verhindert, dass sie von dieser Ansicht verfügbar gemacht wird. Möglicherweise befindet es sich auch nach dem Neustart des Dienstes in einem Zustand, in dem der Start weiterhin verhindert wird.Stellen Sie zunächst sicher, dass der Speicherort der Standardablaufverfolgung über ausreichend Speicherplatz verfügt, das SQL Server-Dienstkonto weiterhin über ausreichende Berechtigungen zum Schreiben verfügt, Sie keinen Speicherplatzkontingenten unterliegen usw. Sie können den Speicherort aus der Registrierung abrufen:
Sobald Sie sicher sind, dass SQL Server in diesen Ordner schreiben kann, können Sie die Standardablaufverfolgung deaktivieren und wieder aktivieren:
Sie sollten den SQL Server-Dienst an dieser Stelle nicht neu starten müssen, aber es kann ein letzter Kick in der Hose von SQL Server sein, wenn Sie immer noch keine Zeile in sehen
sys.traces
. Beachtentrace_id
Sie, dass das, was Sie erhalten, nicht garantiert bei 1 bleibt.quelle
with override
. Die Fehlerprotokolle zeigten tatsächlich ein Ereignis außerhalb des Speicherplatzes.with override
ist Gewohnheit.Ich hatte das gleiche Problem, nachdem die Fahrt voll war. Die Standardablaufverfolgung wurde aktiviert, aber nicht ausgeführt. Das Deaktivieren und erneute Aktivieren funktionierte sofort, ohne die Dienste zu beenden.
quelle