Отслеживание или регистрация поведения функции классификации регулятора ресурсов в Sql Server 2008 - PullRequest
1 голос
/ 05 января 2010

Я пытаюсь использовать регулятор ресурсов в SQL Server 2008, но мне сложно отлаживать функцию классификации и выяснить, какие будут входные переменные, т. Е. Содержит ли SUSER_NAME () имя домена? Как выглядит строка APP_NAME ()?

Также сложно убедиться, что он работает правильно. Какую группу вернула функция? Единственный способ увидеть это - запустить монитор производительности и не мигать, не заметив мелких всплесков в правом счетчике ЦП.

Есть ли какой-нибудь способ, которым я могу либо запустить его в режиме отладки, где я могу установить точку останова и пройти по ней и посмотреть значения переменных, либо я могу по крайней мере сделать метод старой школы записи операторов трассировки в файл Я вижу, что происходит?

Спасибо ...

1 Ответ

4 голосов
/ 30 мая 2010

Прошло много времени с тех пор, как вы просили, но, возможно, вы еще не все выяснили.

Я не знаю ни одного способа записи функции классификатора, хотя вы, вероятно, могли бы использовать SQL Server Profiler. Вы можете убедиться, что он работает правильно, посмотрев на что-то, кроме монитора производительности.

Вы можете использовать простой запрос, чтобы увидеть, как выглядят SUSER_NAME () и APP_NAME (), по крайней мере для вашего соединения:

SELECT 
    SUSER_NAME(), APP_NAME();

(Да, SUSER_NAME () будет содержать имя домена для учетных записей, использующих проверку подлинности Windows.)

Вы можете запросить DMV (Dynamic Management Vies), чтобы показать вам текущие пользовательские соединения вместе с пулом регулятора ресурсов и назначенной ему рабочей группой:

SELECT
    Sess.session_id,
    Sess.program_name,
    Sess.host_name,
    Sess.login_name,
    Sess.nt_domain,
    Sess.nt_user_name,
    Sess.original_login_name,
    RG_WG.pool_id,
    RG_P.name as Pool_Name,
    Sess.group_id,
    RG_WG.name as WorkGroup_Name
FROM sys.dm_exec_sessions Sess
    INNER JOIN sys.dm_resource_governor_workload_groups RG_WG
        ON Sess.group_id = RG_WG.group_id
    INNER JOIN sys.dm_resource_governor_resource_pools RG_P
        ON RG_WG.pool_id = RG_P.pool_id
WHERE
    Sess.is_user_process = 1;
...