Powiedziałbym, że istnieje silna korelacja między wydarzeniem braku miejsca i brakującym śladem. Zauważ, że ta sp_configure
opcja mówi ci tylko, że śledzenie domyślne jest włączone, ale to nie znaczy, że jest uruchomione lub że w ogóle istnieje. Pamiętaj, że sys.traces
nie jest to tabela, ale widok:
create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)
Co TABLE SYSTRACES
zapewnia zestaw wierszy? Jak to działa? Jak filtrowane są jego wyniki? Twoje domysły są równie dobre jak moje. Możliwe, że ślad nadal tam jest, ale w stanie, który uniemożliwia jego ujawnienie przez ten widok. I może być w stanie, który wciąż uniemożliwia uruchomienie go nawet po ponownym uruchomieniu usługi.
Po pierwsze, upewnij się, że lokalizacja domyślnego śledzenia ma wystarczającą ilość miejsca, konto usługi SQL Server nadal ma odpowiednie uprawnienia do zapisu na nim, nie podlegasz żadnym limitom miejsca itp. Możesz uzyskać lokalizację z rejestru:
HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\
Gdy masz pewność, że SQL Server powinien móc zapisywać w tym folderze, możesz wyłączyć i ponownie włączyć domyślne śledzenie:
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;
W tym momencie nie powinieneś ponownie uruchamiać usługi SQL Server, ale może być ostatnim kopnięciem w spodniach SQL Server, jeśli nadal nie widzisz wiersza sys.traces
. Pamiętaj, że trace_id
nie masz gwarancji, że pozostanie na poziomie 1.
select * from sys.traces
zwraca pusty zestaw wierszy