ポーリングデータベースはあまり洗練されたソリューションではありません。
SqlDependency
ADO.NETからはあなたの場合に役立ちます。ポーリングではなく通知メカニズムを使用します。通知はデータベースのServiceBrokerによって提供されるため、データベースでこのサービスを有効にする必要があります。 OnChange
指定されたテーブルが変更されるとイベントが発生します(更新、削除、挿入..)
SqlDependencyの使用方法の例を次に示します。
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (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.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}
http://msdn.microsoft.com/en-us/library/ 62xk7953.aspx
Service Brokerを有効にする方法は次のとおりです(これを行うにはデータベースを排他的に使用することに注意してください。SQLサーバーの再起動後に行うのが最適です): http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx
(リンク切れ)
可能な代替リンク: http://technet。 microsoft.com/en-us/library/ms166086(v=sql.105).aspx