Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak mogę powiadomić mój program o aktualizacji bazy danych?

Baza danych odpytywania nie jest zbyt eleganckim rozwiązaniem.

SqlDependency z ADO.NET przyda się w Twoim przypadku. Nie korzysta z odpytywania, ale z mechanizmu powiadamiania. Powiadomienia są dostarczane przez Service Broker w Twojej bazie danych, więc musisz włączyć tę usługę w Twojej bazie danych. OnChange zdarzenie zostanie wywołane, gdy określona tabela zmieni się (aktualizacja, usunięcie, wstawienie..)

Oto przykład, jak używać 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);
}

z http://msdn.microsoft.com/en-us/library/ 62xk7953.aspx

Oto jak włączyć Service Broker (pamiętaj, że będziesz mieć wyłączność na bazę danych, aby to zrobić - najlepiej zrobić to po ponownym uruchomieniu serwera sql):http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx (Uszkodzony link)

Możliwy alternatywny link:http://technet. microsoft.com/en-us/library/ms166086(v=sql.105).aspx



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać numer tygodnia miesiąca od daty w serwerze sql 2008

  2. Błąd serwera SQL — HRESULT E_FAIL został zwrócony z wywołania komponentu COM

  3. Jak znaleźć tekst wewnątrz procedur / wyzwalaczy SQL Server?

  4. Zapytanie krzyżowe z dynamicznymi kolumnami w SQL Server 2005 do góry

  5. Zmień język dla bieżącej sesji w SQL Server