我正在尝试在 SQL Server 2008 中使用资源调控器,但我发现很难调试分类函数并弄清楚输入变量将具有什么,即 SUSER_NAME() 是否包含域名?APP_NAME() 字符串是什么样的?
也很难验证它是否正常工作。函数返回哪个组?我能看到这一点的唯一方法是启动性能监视器并不眨眼地观察正确 CPU 计数器中的小信号。
有什么方法可以在调试模式下运行它,我可以设置断点并单步执行并查看变量值,或者我至少可以执行将跟踪语句写入文件的老式方法,以便我可以看到这是怎么回事?
谢谢...
我正在尝试在 SQL Server 2008 中使用资源调控器,但我发现很难调试分类函数并弄清楚输入变量将具有什么,即 SUSER_NAME() 是否包含域名?APP_NAME() 字符串是什么样的?
也很难验证它是否正常工作。函数返回哪个组?我能看到这一点的唯一方法是启动性能监视器并不眨眼地观察正确 CPU 计数器中的小信号。
有什么方法可以在调试模式下运行它,我可以设置断点并单步执行并查看变量值,或者我至少可以执行将跟踪语句写入文件的老式方法,以便我可以看到这是怎么回事?
谢谢...
自从您问以来已经有一段时间了,但也许您还没有完全弄清楚。
我不知道有什么方法可以记录分类器函数,尽管您可能会使用 SQL Server Profiler。您可以通过查看性能监视器以外的其他内容来验证它是否正常工作。
您可以使用一个简单的查询来查看 SUSER_NAME() 和 APP_NAME() 的外观,至少对于您的连接而言:
SELECT
SUSER_NAME(), APP_NAME();
(是的 SUSER_NAME() 将包含使用 Windows 身份验证的帐户的域名。)
您可以查询 DMV(动态管理视图)以向您显示当前用户连接以及分配给它的资源管理器池和工作组:
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;