title: Why is my SqlDependency not firing
body: <p>I have a database running on MS SQL Server 2005 and an ASP.NET 3.5 web application.</p>
  
  <p>The database contains a product catalog which I'm using to feed "pages" into a CMS running in the web app. Once the pages have been created the application caches them so I need to notify the application of this change so it can recreate the page objects.</p>
  
  <p>The CMS uses it's own caching so an SqlCacheDependency cannot be used to perform this task.</p>
  
  <p>When I fire the app up I do get a subscriber appearing in the result of </p>
  
  <pre><code>select * from sys.dm_qn_subscriptions
  </code></pre>
  
  <p>But as soon as I add some data to the table, the subscriber disappears and the OnChanged event never fires.</p>
  
  <p>In my startup code I have the following</p>
  
  <pre><code>// Ensure the database is setup for notifications
  SqlCacheDependencyAdmin.EnableNotifications(DataHelper.ConnectionString);
  SqlCacheDependencyAdmin.EnableTableForNotifications(DataHelper.ConnectionString, "Category");
  SqlCacheDependencyAdmin.EnableTableForNotifications(DataHelper.ConnectionString, "Product");
  
  if (!SqlDependency.Start(DataHelper.ConnectionString, SqlDependencyQueueName))
       throw new Exception("Something went wrong");
  
  string queueOptions = string.Format("service = {0}", SqlDependencyQueueName);
  using (var connection = new SqlConnection(DataHelper.ConnectionString))
  {
       connection.Open();
       using (SqlCommand command = new SqlCommand(@"SELECT [CategoryID],[Name]
                     FROM [dbo].[Category]", connection))
       {
             // Create a dependency and associate it with the SqlCommand.
             dependency = new SqlDependency(command, queueOptions, 0);
  
              // Subscribe to the SqlDependency event.
              dependency.OnChange += new OnChangeEventHandler(OnDependencyChange);
  
              command.ExecuteReader().Close();
          }
      }
  
  // ...
  
  void OnDependencyChange(object sender, SqlNotificationEventArgs e)
  {
      Debugger.Break(); // This never hits
      this.ReloadData();
  }
  </code></pre>