2017-06-12 12 views
0

こんにちは私はWindowsサービスコードにSql依存関係を実装しようとしています。私はすでにサービスブローカーを真として設定しています。私はこのコードをWindows On Startメソッドの中に書いています。メソッドOnDependencyChangeは、テーブルに新しいエントリがあるとすぐに開始する必要があります。しかしそれは決して起こらない。 はここSqlDependency Not firing C#

 System.Data.SqlClient.SqlDependency.Start("connection 
     string;database=dbName;Integrated Security=True;"); 
     SqlConnection connection = new SqlConnection("connection 
     string;database=dbName;Integrated Security=True;"); 
     connection.Open(); 
     using (SqlCommand command = new SqlCommand("SELECT * FROM 
     UserDetails", connection)) 
     { 


      SqlDependency dependency = new SqlDependency(command); 



      dependency.OnChange += new 
       OnChangeEventHandler(OnDependencyChange); 


      using (SqlDataReader reader = command.ExecuteReader()) 
      { 
       // Process the DataReader. 
      } 
     } 



    void OnDependencyChange(object sender, SqlNotificationEventArgs e) 
    { 
     // Handle the event (for example, invalidate this cache entry). 
    } 

助けてください、私のコードです。

+0

SELECT * FROM ...を使用することはできません。代わりにSELECT col1、col2、col3 FROM ...を使用してください。 – Maarten

+0

返信Maartenありがとうございます。私もそれをチェックした。いいえ運がいいです.. – Dezler

+0

気になるカラムを明示的に指定するだけでなく、テーブルが存在するスキーマ( 'SELECT col1、col2 FROM dbo.UserDetails')を指定する必要があります。それでも動作しない場合は、接続しようとしているSQL ServerインスタンスでService Broker機能が有効になっていることを確認してください。 – Tom

答えて

0

セキュリティの問題があると思います。正しく覚えていれば、SqlDependencyを操作するために必要なアクセス許可に関する既知の問題があります。 まず、Service Broker機能を検証し、最終的に有効にする必要があります。 query notificationsを有効にする必要があります。その後、SqlDependencyイベントでデータの変更を検出できるようにすることができます。Detecting Changes with SqlDependency