编写分类器函数的注意事项

资源调控器支持用户定义函数,其返回值用来对会话进行分类,以便将它们路由到适当的工作负荷组。

在将分类器用户定义函数用于对传入请求进行分类之前,应当先对它进行测试和优化。质量低劣的函数会由于超时而使系统不可用,而超时又会导致泄露配置信息。可以使用专用管理员连接 (DAC) 来解决质量低劣的分类器函数的问题,因为 DAC 不进行分类,可以在资源调控器运行并对传入会话进行分类时使用。有关详细信息,请参阅使用专用管理员连接

注意注意

如果没有 DAC 可用来进行故障排除,则可以在单用户模式下重新启动系统。虽然单用户模式不进行分类,但是您不可以在资源调控器分类运行时对它进行诊断。

可以在分类器函数中使用现有系统函数,并使用这些函数所返回的用于对会话进行分类的值。

函数

以下系统函数可用于分类:HOST_NAME()、APP_NAME()、SUSER_NAME()、SUSER_SNAME()、IS_SRVROLEMEMBER() 和 IS_MEMBER()。

注意事项注意

创建返回用于分类的属性的函数时,必须考虑该属性是否安全。否则,必须评估使用该属性的风险。HOST_NAME() 和 APP_NAME() 函数返回不安全的属性。例如,APP_NAME() 可以返回应用程序连接字符串中提供的任意值。

LOGINPROPERTY 函数已更新,新增了两个可用于分类的属性:DefaultDatabase 和 DefaultLanguage。此外,可以使用 ORIGINAL_DB_NAME 函数获取在用户连接字符串中指定的数据库的名称。

资源调控器还实现了 CONNECTIONPROPERTY 函数,以提供可用于分类的附加属性。该函数为有关请求所参与的唯一连接的属性返回与 sys.dm_exec_connections 动态管理视图中对应列的值相同的值。