SQL 2005 以降で SQL テーブルまたはレコードへの変更を監視するには、SqlDependency クラスを利用できます。
サブスクリプションを管理する数百のクライアントではなく、単一のサーバーがデータベースに対してアクティブなサブスクリプションを管理している ASP.NET または中間層サービスでの使用を対象としています。参照しているクライアントの最大数によっては、クライアントへの SQL に対する通知サブスクリプションを管理できるキャッシュ プール サービスを構築する必要がある場合があります。
内部では、Notification Services ではなく Service Broker を使用する SqlNotificationRequest を使用します。したがって、これは SQL 2008 などで今後も機能するはずです。
SqlDependency の MSDN
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection);
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the refence in a class member.
// Subscribe to the SqlDependency event.
dependency.OnChange+=new OnChangeEventHandler(OnDependencyChange);
// Execute the command.
command.ExecuteReader();
// Process the DataReader.
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationsEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}
「SQL 2005 クエリ通知の使用と監視」の記事では、Service Broker などをサブスクライブするために必要な適切な SQL 権限と共に、(例として Web アプリを使用して) コードで設定する手順について説明しています。
Web シナリオでは、ASP.NET (Web キャッシュ)クラスも使用できます。