SQL Server の User Settable オブジェクト
適用対象: SQL サーバー
Microsoft SQL Server の User Settable オブジェクトを使用すると、カスタム カウンター インスタンスを作成できます。 カスタム カウンター インスタンスを使用して、SQL Server データベースに固有のコンポーネント (例: ログに記録された顧客注文数や製品在庫数) など、既存のカウンターでは監視できないサーバーの特性を監視します。
User Settable オブジェクトには、 ユーザー カウンター 1 から ユーザー カウンター 10まで、クエリ カウンターの 10 個のインスタンスが含まれています。 これらのカウンターを、sp_user_counter1
から sp_user_counter10
までの SQL Server ストアド プロシージャにマップします。 ユーザー アプリケーションからこれらのストアド プロシージャが実行されると、ストアド プロシージャによって設定された値がシステム モニターに表示されます。 1 つのカウンターを使用して、1 日に発生した特定製品の注文件数を数えるストアド プロシージャなど、任意の整数値を 1 つ監視できます。
Note
ユーザー カウンターのストアド プロシージャは、システム モニターから自動的にポーリングされることはありません。 カウンター値を更新するには、ユーザー アプリケーションから明示的にストアド プロシージャを実行する必要があります。 カウンター値を自動的に更新するには、トリガーを使用します。
次の表では、SQL Server の User Settable オブジェクトについて説明します。
SQL Server User Settable カウンター | 説明 |
---|---|
クエリ | 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 dbo.sp_user_counter1 10;
ユーザー カウンターのストアド プロシージャは、独自のストアド プロシージャなど他のストアド プロシージャを呼び出せる場所なら、どこからでも呼び出すことができます。 たとえば、次のストアド プロシージャを作成すると、SQL Server のインスタンスが起動されてから行われた接続と接続試行の回数を数えることができます。
DROP PROC My_Proc;
GO
CREATE PROC My_Proc
AS
EXECUTE dbo.sp_user_counter1 @@CONNECTIONS;
GO
@@CONNECTIONS 関数は、SQL Server のインスタンスが起動されてから行われた接続または接続試行の回数を返します。 この値は、パラメーターとして sp_user_counter1
ストアド プロシージャに渡されます。
重要
ユーザー カウンターのストアド プロシージャで定義するクエリは、できるだけ単純なものにしてください。 大量の並べ替え操作やハッシュ操作を実行するクエリや大量の I/O を実行するクエリは、メモリを集中的に消費するので、パフォーマンスに影響する可能性があります。
監視の例
の動的管理ビューで次の T-SQL クエリを使用して、このオブジェクトのカウンターの確認を開始します。
SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%User Settable%';
アクセス許可
sp_user_counter
ストアド プロシージャはすべてのユーザーが使用できますが、任意のクエリ カウンターに制限することもできます。