sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu upozornit svůj program na aktualizaci databáze?

Databáze dotazování není příliš elegantní řešení.

SqlDependency z ADO.NET bude ve vašem případě užitečné. Nevyužívá polling, ale oznamovací mechanismus. Upozornění poskytuje Service Broker ve vaší databázi, takže budete muset tuto službu povolit ve vaší databázi. OnChange událost se vyvolá, když se zadaná tabulka změní (update, delete, insert..)

Zde je příklad použití 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

Zde je návod, jak povolit Service Broker (všimněte si, že k tomu budete mít výhradní právo na databázi – nejlépe to udělejte po restartu serveru SQL):http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx (Nefunkční odkaz)

Možný alternativní odkaz:http://technet. microsoft.com/en-us/library/ms166086(v=sql.105).aspx



  1. Potřebuji vytáhnout data na základě jejich přesné sekvence v poli

  2. Má odstranění řádku ze základní tabulky vliv na zobrazení této tabulky?

  3. SqlAlchemy (Postgres + Flask) :Jak sečíst více sloupců?

  4. MariaDB LAST_INSERT_ID() Vysvětleno