sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan jeg give mit program besked, når databasen er blevet opdateret?

Polling database er ikke særlig elegant løsning.

SqlDependency fra ADO.NET vil være nyttig i dit tilfælde. Den bruger ikke polling, men notifikationsmekanisme. Meddelelserne leveres af Service Broker i din database, så du skal aktivere denne service i din database. OnChange hændelsen hæves, når specificeret tabel ændres (opdater, slet, indsæt...)

Her er et eksempel på, hvordan man bruger 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);
}

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

Her er, hvordan du aktiverer Service Broker (bemærk, at du vil have eksklusivitet på databasen til at gøre det - gør det bedst efter genstart af sql-serveren):http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx (Knust link)

Muligt alternativt link:http://technet. microsoft.com/en-us/library/ms166086(v=sql.105).aspx



  1. dynamisk tabelnavn i markøren

  2. Spring Boot Database initialisering MySQLException for Trigger

  3. Sådan bruger du spool-kommando i sql-udvikler-oracle

  4. Varchar til talkonvertering til sortering