Microsoft SQL Server の User Settable オブジェクトを使用すると、カスタム カウンター インスタンスを作成できます。 カスタム カウンター インスタンスを使用して、SQL Server データベースに固有のコンポーネント (たとえば、ログに記録された顧客注文の数や製品インベントリ) など、既存のカウンターによって監視されないサーバーの側面を監視します。
User Settable オブジェクトには、クエリ カウンターのインスタンスが 10 個含まれています。ユーザー カウンター 1 からユーザー カウンター 10 までです。 これらのカウンターは、sp_user_counter10を介して sp_user_counter1 SQL Server ストアド プロシージャにマップ されます。 これらのストアド プロシージャはユーザー アプリケーションによって実行されるため、ストアド プロシージャによって設定された値がシステム モニターに表示されます。 カウンターでは、任意の 1 つの整数値を監視できます (たとえば、1 日に発生した特定の製品の注文数をカウントするストアド プロシージャ)。
注
ユーザー カウンター ストアド プロシージャは、システム モニターによって自動的にポーリングされません。 カウンター値を更新するには、ユーザー アプリケーションによって明示的に実行する必要があります。 トリガーを使用して、カウンターの値を自動的に更新します。 たとえば、テーブル内の行数を監視するカウンターを作成するには、次のステートメントを実行するテーブルに INSERT トリガーと DELETE トリガーを作成 SELECT COUNT(*) FROM table
。 テーブルで INSERT 操作または DELETE 操作が発生したためにトリガーが起動されるたびに、システム モニター カウンターが自動的に更新されます。
次の表では、SQL Server User Settable オブジェクトについて説明します。
SQL Server ユーザー設定可能カウンター | 説明 |
---|---|
クエリ | User Settable オブジェクトには、クエリ カウンターが含まれています。 ユーザーは、クエリ オブジェクト内で ユーザー カウンター を構成します。 |
次の表では、クエリ カウンターのインスタンスについて説明します。
クエリカウンターのインスタンス | 説明 |
---|---|
ユーザー カウンター 1 | sp_user_counter1を使用して定義されます。 |
ユーザー カウンター 2 | sp_user_counter2を使用して定義されます。 |
ユーザー カウンター 3 | sp_user_counter3を使用して定義されます。 |
... | |
ユーザー カウンター 10 | sp_user_counter10を使用して定義されます。 |
ユーザー カウンター ストアド プロシージャを使用するには、カウンターの新しい値を表す単一の整数パラメーターを使用して、独自のアプリケーションから実行します。 たとえば、 ユーザー カウンター 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 はすべてのユーザーに対して使用できますが、任意のクエリ カウンターに対して制限できます。