
最近、私は、顧客向けに自社製品をホストするホスト型システムの管理を手伝うよう依頼されました。各顧客には特定の SQL インスタンスに対する一意のユーザーが与えられ、複数のインスタンスを実行していますが、1 つのインスタンスには 50 ~ 100 人のユーザーがいます。また、パートナーであるサードパーティ ベンダーが、自社のソフトウェアで同じユーザーに許可されているのと同じクライアント データベースにアクセスするソフトウェアを実行することも許可しています。しかし、サードパーティ プログラムは実装が不十分な場合が多く、大量の CPU を消費して顧客を混乱させるという問題に直面しました。リソース ガバナーを使用すると、特定のユーザーがアクセスできるリソースの量を制限できることは知っています。しかし、特定のプログラム名がアクセスできるリソースを制限する方法、または優先順位を低く設定する方法があるかどうか疑問に思っています。これらのサードパーティ アプリケーションを実行できる時間枠は限られているため、アプリケーションのタイミングをこれ以上延長することはできません。これまでのところ、SQL にアクセスする特定のプログラムのリソースや優先順位を制限する方法は見つかっていません。検索では出てこないこの種の情報のリソースがあるかどうか知りたいです。
答え1
いくつか読んでみたところ、リソース ガバナーを使用すると、各セッション/接続を分類し、特定のリソース プールに割り当てることができるようです。リソース プールは、必要に応じてリソースを制限できるものです。ただし、これを実現するには、セッションの属性を調べて、接続がどのリソース プールに属するかを決定する分類関数を定義する必要があります。
APP_NAME()
SQL の関数 (分類関数内) を使用して、接続を行っているアプリケーション名を取得できます。次に、より少ないリソースが割り当てられたリソース プールに割り当てます。
参考リンク:
リソースガバナー -https://msdn.microsoft.com/en-us/library/bb933866(v=sql.105).aspx
分類子ユーザー定義関数の作成とテスト -https://msdn.microsoft.com/en-us/library/cc645892(v=sql.105).aspx