跟踪MSSQL 2008表的变化,什么是最好的方法
本文关键字:方法 什么 变化 MSSQL 2008 跟踪 | 更新日期: 2023-09-27 18:09:51
我需要从。net 4.0应用程序跟踪一个MSSQL表中的记录变化。最好的方法是什么?
关于应用程序的更多描述。我们有从应用程序#1更新的成员表。我们还开发了应用程序#2,它应该跟踪成员表,并在某些成员数据更改时发送电子邮件通知。
对于DML更改:在SQL Server 2008中,您有一个用于此目的的内置特性:更改数据捕获。
对于DDL更改:从SQL Server 2005开始,您有DDL触发器,例如
如果您有一个历史表(具有与原始表相同的列的表,加上一个自动递增的ID列),那么您可以跟踪有关原始表更改的所有内容。您可以跟踪插入、删除和每个更改。使用插入、更新和删除触发器将行放入历史表。如果你不需要所有这些选项,那么就使用那些你确实需要的选项。
如果您选择在原始表中使用IsDeleted标志,则会使每个查询复杂化,并使活动表留下许多不需要的行。但这可以工作,取决于你的需要。
查看这个链接…了解更多信息....http://www.codeproject.com/KB/database/DTS_SQLExpress.aspx
这就是我认为你需要做的。
在SQL表上创建一个触发器,每次数据更新时在一个文件夹中创建一个文件。
在应用程序1和2中创建FileSystemWatcher来监视文件夹
在FileWatcher的回调函数中,编写发送邮件通知的代码
使用开源类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();