Suchen Sie nach Änderungen an einer SQL Server-Tabelle?

  • Wie kann ich eine SQL Server-Datenbank auf Änderungen an einer Tabelle überwachen, ohne Auslöser zu verwenden oder die Struktur der Datenbank auf irgendeine Weise zu ändern? Meine bevorzugte Programmierumgebung ist .NET und C #.

    Ich möchte gerne jedes SQL Server 2000 SP4 oder neuer unterstützen . Meine Anwendung ist eine anschraubbare Datenvisualisierung für ein Produkt eines anderen Unternehmens. Unser Kundenstamm besteht aus Tausenden von Kunden, daher möchte ich nicht die Anforderungen festlegen, dass die Tabelle des Drittanbieters bei jeder Installation geändert wird.

    By "Änderungen an einer Tabelle" Ich meine Änderungen an Tabellendaten, nicht an der Tabellenstruktur.

    Letztendlich möchte ich, dass die Änderung ein Ereignis in meiner Anwendung auslöst statt nach Änderungen in einem bestimmten Intervall suchen zu müssen.


    Die beste Vorgehensweise unter Berücksichtigung meiner Anforderungen (keine Auslöser oder Schemaänderung, SQL Server 2000 und 2005) scheint die Funktion BINARY_CHECKSUM in T-SQL . Die Art und Weise, die ich implementieren möchte, ist folgende:

    Führen Sie nach jeweils X Sekunden die folgende Abfrage aus:

     SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
    FROM sample_table
    WITH (NOLOCK);
     

    Vergleichen Sie das mit dem gespeicherten Wert. Wenn sich der Wert geändert hat, gehen Sie die Zeile zeilenweise mit der Abfrage durch:

     SELECT row_id, BINARY_CHECKSUM(*)
    FROM sample_table
    WITH (NOLOCK);
     

    Vergleichen Sie die zurückgegebenen Werte Prüfsummen mit gespeicherten Werten.

    30 November 2016
    Nhan
7 answers