分類関数の記述に関する注意点

リソース ガバナでは、ユーザー定義関数がサポートされています。この関数の戻り値を使用してセッションを分類し、適切なワークロード グループにセッションがルーティングされるようにします。

ユーザー定義の分類関数は、受信要求の分類に使用する前に、テストと最適化を行う必要があります。関数の記述に問題があると、タイムアウトによってシステムが使用不可能になり、構成情報が公開される場合があります。記述に問題のある分類関数のトラブルシューティングには、専用管理者接続 (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 動的管理ビューの対応する列と同じ値です。