sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag meddela mitt program när databasen har uppdaterats?

Pollingdatabas är inte särskilt elegant lösning.

SqlDependency från ADO.NET kommer att vara användbar i ditt fall. Den använder inte polling utan meddelandemekanism. Aviseringarna tillhandahålls av Service Broker i din databas, så du måste aktivera denna tjänst i din databas. OnChange händelse kommer att öka när specificerad tabell ändras (uppdatera, ta bort, infoga...)

Här är ett exempel på hur man använder 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);
}

från http://msdn.microsoft.com/en-us/library/ 62xk7953.aspx

Så här aktiverar du Service Broker (observera att du kommer att ha exklusivitet på databasen för att göra det - gör det bäst efter omstart av sql-servern):http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx (Krossad länk)

Möjlig alternativ länk:http://technet. microsoft.com/en-us/library/ms166086(v=sql.105).aspx



  1. mysql kan inte infoga eftersom inget standardvärde?

  2. Kopiera en MySQL-tabell inklusive index

  3. C# - Ska jag använda statisk databasanslutning

  4. Varför försöker rails ansluta till mysql?