Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa memberi tahu program saya ketika database telah diperbarui?

Basis data polling bukanlah solusi yang elegan.

SqlDependency dari ADO.NET akan berguna dalam kasus Anda. Itu tidak menggunakan polling tetapi mekanisme notifikasi. Notifikasi disediakan oleh Service Broker di database Anda, jadi Anda perlu mengaktifkan layanan ini di database Anda. OnChange acara akan muncul ketika tabel yang ditentukan berubah (perbarui, hapus, sisipkan..)

Berikut adalah contoh cara menggunakan 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);
}

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

Berikut adalah cara mengaktifkan Service Broker (perhatikan bahwa Anda akan memiliki eksklusifitas pada database untuk melakukan itu - sebaiknya lakukan setelah restart server sql):http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx (Tautan rusak)

Kemungkinan tautan alternatif: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. Tabel SQL Server:apa perbedaan antara @, # dan ##?

  2. Query Profiling 101 — Ya, Itu Benar-Benar Dapat Meningkatkan Kinerja SQL Server Anda

  3. Pernyataan INSERT bertentangan dengan batasan FOREIGN KEY - SQL Server

  4. Gunakan OBJECTPROPERTY() untuk Menentukan Apakah Objek adalah Tampilan di SQL Server

  5. Bagaimana saya bisa memanggil Prosedur Tersimpan SQL menggunakan EntityFramework 7 dan Asp.Net 5