我需要跟踪.NET 4.0应用程序中一个MSSQL表中的记录更改。这样做的最佳方法是什么?
有关该应用的更多说明。我们有会员表,从应用程序#1更新。我们还开发了应用程序#2,它应该跟踪成员资格表并发送有关某些成员资格数据更改的电子邮件通知。
答案 0 :(得分:7)
对于DML更改: 在SQL Server 2008中,您具有用于此目的的内置功能:Change data capture。
对于DDL更改:从SQL Server 2005开始,您有DDL triggers,Example
答案 1 :(得分:3)
如果您有一个历史记录表(与原始表具有相同列的表,加上一个自动增量ID列),您可以跟踪有关原始表更改的所有内容。您可以跟踪插入,删除和每个更改。使用触发器进行插入,更新和删除以将行放入历史记录表中。如果您不需要所有这些选项,请使用您需要的选项。
如果选择在原始表中使用IsDeleted标志,则会使每个查询复杂化,并使活动表中包含许多不需要的行。但这取决于您的需求。
查看此链接..了解更多信息.... http://www.codeproject.com/KB/database/DTS_SQLExpress.aspx
答案 2 :(得分:1)
我认为你需要这样做。
在SQL表上创建一个触发器,每次更新数据时都会在一个文件夹中创建一个文件。
在应用程序1和2中创建FileSystemWatcher,它将监视该文件夹。
在FileWatcher的回调函数中,编写代码以发送电子邮件通知。
答案 3 :(得分:0)
使用开源类SqlDependencyEx。配置和使用非常简单:
// See constructor optional parameters to configure it according to your needs
var listener = new SqlDependencyEx(connectionString, "YourDatabase", "YourTable");
// e.Data contains actual changed data in the XML format
listener.TableChanged += (o, e) => Console.WriteLine("Your table was changed!");
// After you call the Start method you will receive table notifications with
// the actual changed data in the XML format
listener.Start();
// ... Your code is here
// Don't forget to stop the listener somewhere!
listener.Stop();
希望这有帮助。