SQL Server: User Settable オブジェクト
Microsoft SQL Server の User Settable オブジェクトを使用すると、カスタムのカウンタ インスタンスを作成できます。カスタムのカウンタ インスタンスは、SQL Server データベースのユーザー独自のコンポーネントなど、既存のカウンタでは監視されないサーバーの特性を監視するために使用します。たとえば、ログに記録された顧客注文数や製品在庫数などを監視できます。
User Settable オブジェクトには、ユーザー カウンタ 1 からユーザー カウンタ 10 まで、クエリ カウンタの 10 個のインスタンスが含まれています。これらのカウンタは、sp_user_counter1 から sp_user_counter10 までの SQL Server ストアド プロシージャに対応します。ユーザー アプリケーションからこれらのストアド プロシージャが実行されると、ストアド プロシージャによって設定された値がシステム モニタに表示されます。1 つのカウンタは、1 日に発生した特定製品の注文件数を数えるストアド プロシージャなど、任意の整数値を 1 つ監視できます。
注意 |
---|
ユーザー カウンタのストアド プロシージャは、システム モニタから自動的にポーリングされることはありません。カウンタ値を更新するには、ユーザー アプリケーションから明示的にストアド プロシージャを実行する必要があります。カウンタ値を自動的に更新するには、トリガを使用します。たとえば、テーブルの行数を監視するカウンタを作成するには、テーブルに対する INSERT と DELETE のトリガを作成し、SELECT COUNT(*) FROM table というステートメントが実行されるようにします。テーブルに対する INSERT 操作か DELETE 操作が発生するとトリガが起動され、システム モニタ カウンタが自動的に更新されます。 |
次の表では、SQL Server の User Settable オブジェクトについて説明します。
SQL Server User Settable カウンタ |
説明 |
---|---|
Query |
User Settable オブジェクトには、Query カウンタが含まれています。ユーザーは、クエリ オブジェクト内のユーザー カウンタを構成します。 |
次の表では、Query カウンタのインスタンスについて説明します。
Query カウンタのインスタンス |
説明 |
---|---|
ユーザー カウンタ 1 |
sp_user_counter1 を使用するように定義されています。 |
ユーザー カウンタ 2 |
sp_user_counter2 を使用するように定義されています。 |
ユーザー カウンタ 3 |
sp_user_counter3 を使用するように定義されています。 |
… |
|
ユーザー カウンタ 10 |
sp_user_counter10 を使用するように定義されています。 |
ユーザー カウンタのストアド プロシージャを使用するには、カウンタの新しい値を示す 1 つの整数パラメータを指定して、独自のアプリケーションからそのストアド プロシージャを実行します。たとえば、ユーザー カウンタ 1 の値を 10 に設定するには、次の Transact-SQL ステートメントを実行します。
EXECUTE sp_user_counter1 10
ユーザー カウンタのストアド プロシージャは、独自のストアド プロシージャなど他のストアド プロシージャを呼び出せる場所なら、どこからでも呼び出すことができます。たとえば、次のストアド プロシージャを作成して、SQL Server のインスタンスが起動されてから行われた接続と接続試行の数を数えることができます。
DROP PROC My_Proc
GO
CREATE PROC My_Proc
AS
EXECUTE sp_user_counter1 @@CONNECTIONS
GO
@@CONNECTIONS 関数は、SQL Server のインスタンスが起動されてから行われた接続または接続試行の数を返します。返された値が、パラメータとして sp_user_counter1 ストアド プロシージャに渡されます。
重要 |
---|
ユーザー カウンタのストアド プロシージャで定義するクエリは、できるだけ単純なものにしてください。大量の並べ替え操作やハッシュ操作を実行するクエリや大量の I/O を実行するクエリは、メモリを集中的に消費するので、パフォーマンスに影響する可能性があります。 |
権限
sp_user_counter はすべてのユーザーが使用できますが、任意のクエリ カウンタに制限することもできます。