如何跟踪对数据库表的任何更改

时间:2013-10-30 12:52:14

标签: c# .net sql-server-2008 sqldependency

我有2个应用程序,一个用于添加数据库,另一个用于监视数据库中的任何更改,

如何跟踪db中的任何更改(新记录,更改现有记录,删除),是否有类似系统监视器的类来监视数据库表?

我搜索并找到了SQL Dependency Class,但我不知道它是否适合我的场景。

提前致谢,

3 个答案:

答案 0 :(得分:2)

您可以使用trigger来检查它们在您的实例中执行的INSERT,UPDATE或DELETE查询。

此外,SQL Server有一个很棒的工具SQL Server Profiler。您可以使用它连接到您的实例并收听每个查询和操作。

SO question也许可以帮到你。

答案 1 :(得分:0)

我不建议为这种情况寻找触发器,因为这将是额外的负担。

但有2个选项

1)。 Microsoft SQL Server - 更改数据捕获(CDC) - here 遗憾的是,这在标准版本中不可用。 但您可以在Enterprise,Developer和Evaluation版本中找到

2)。 CodePlex-StandardCDC here

答案 2 :(得分:0)

使用开源类SqlDependencyEx。配置和使用非常简单:

int changesReceived = 0;
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
          TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME)) 
{
    sqlDependency.TableChanged += (o, e) => changesReceived++;
    sqlDependency.Start();

    // Make table changes.
    MakeTableInsertDeleteChanges(changesCount);

    // Wait a little bit to receive all changes.
    Thread.Sleep(1000);
}

Assert.AreEqual(changesCount, changesReceived);

希望这有帮助。