Я бы сказал, что между вашим событием вне космоса и отсутствующим следом существует сильная корреляция. Обратите внимание, что sp_configure
опция просто говорит вам, что трассировка по умолчанию включена, но это не значит, что она запущена или что она вообще существует. Обратите внимание, что sys.traces
это не таблица, а представление:
create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)
Что TABLE SYSTRACES
обеспечивает набор строк? Как это работает? Как фильтруются его результаты? Твоя догадка так же хороша как и моя. Возможно, что трасса все еще там, но в состоянии, которое препятствует тому, чтобы это было выставлено этим представлением. И он может находиться в состоянии, которое все еще не позволяет запустить его даже после перезапуска службы.
Во-первых, убедитесь, что в расположении трассы по умолчанию достаточно места, учетная запись службы SQL Server по-прежнему имеет достаточные разрешения для записи в нее, на вас не распространяются никакие квоты пространства и т. Д. Расположение можно получить из реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\
Если вы уверены, что SQL Server должен иметь возможность записи в эту папку, вы можете отключить и снова включить трассировку по умолчанию:
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;
Вам не нужно перезапускать службу SQL Server на этом этапе, но это может быть последним ударом по штанам SQL Server, если вы все еще не видите строку в sys.traces
. Обратите внимание, что trace_id
вы не гарантированно останетесь на 1.
select * from sys.traces
возвращает пустой набор строк