Direi che esiste una forte correlazione tra il tuo evento fuori dallo spazio e la traccia mancante. Si noti che l' sp_configure
opzione indica semplicemente che la traccia predefinita è abilitata, ma ciò non significa che sia in esecuzione o addirittura esista. Nota che sys.traces
non è una tabella ma una vista:
create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)
Cosa fornisce il TABLE SYSTRACES
set di righe? Come funziona? Come vengono filtrati i suoi risultati? La tua ipotesi è buona come la mia. È possibile che la traccia sia ancora presente, ma in uno stato che ne impedisca l'esposizione da questa vista. E potrebbe essere in uno stato che impedisce ancora l'avvio, anche dopo il riavvio del servizio.
Innanzitutto, assicurarsi che la posizione della traccia predefinita disponga di spazio sufficiente, che l'account del servizio SQL Server disponga ancora delle autorizzazioni adeguate per scrivere su di esso, che non si siano soggetti a quote di spazio, ecc. È possibile ottenere la posizione dal registro:
HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\
Dopo aver verificato che SQL Server dovrebbe essere in grado di scrivere in questa cartella, è possibile disabilitare e riattivare la traccia predefinita:
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 1;
GO
RECONFIGURE WITH OVERRIDE;
A questo punto non dovresti aver bisogno di riavviare il servizio SQL Server, ma potrebbe essere un calcio di punizione nei pantaloni di SQL Server se ancora non vedi una riga sys.traces
. Si noti che non trace_id
si ottiene che si ottiene a 1.
select * from sys.traces
restituisce un set di righe vuoto