Трасування за замовчуванням увімкнено, але не активне


9

Коли я запитую конфігурацію трасування за замовчуванням, він показує увімкнено:

exec sp_configure 'default trace enabled';
-->
name                    minimum  maximum  config_value  run_value
default trace enabled         0        1             1          1

Але коли я запитую sys.tracesшлях, він повертає порожній набір рядків:

select * from sys.traces;

Що може пояснити відсутність включеного сліду?


@AaronBertrand: select * from sys.tracesповертає порожній набір рядків
Andomar

Також я чув про випадки, коли траєкторія відмирає через те, що накопичений накопичувач (і це не обов'язково вплине на SQL Server, якщо не помітний / коригуваний спосіб).
Аарон Бертран

@AaronBertrand: Адміністратор каже, що диск накопичився кілька днів тому. Чи буде перезапуск служби SQL Server також перезапустити слід за замовчуванням?
Андомар

Слід, який зупинився, був і моїм першим, але EXEC sp_trace_setstatus @traceid = 1, @status = 0повертається назад, The default trace cannot be stopped or modified.тому не впевнений, що його можна зупинити, якщо не з’явиться помилка, яка заважає йому запуститися. Щось у журналах помилок?
Мартін Сміт

@Martin це правильно, ви не можете зупинити слід за замовчуванням вручну.
Аарон Бертран

Відповіді:


13

Я б сказав, що існує сильна кореляція між вашою космічною подією та відсутнім слідом. Зауважте, що 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.


Дякуємо, відключаємо та знову включаємо працювали. Я не користувався with override. Журнали помилок дійсно показували події поза простором.
Андомар

1
@ Випадково вибачте, with overrideце звичка.
Аарон Бертран

1

У мене була така ж проблема після заповнення накопичувача. Трасування за замовчуванням увімкнено, але не працює. Відключення та повторне включення спрацювало негайно, не зупиняючи послуги.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.