如何跟踪.NET应用程序中许多SQL Server数据库的更改?
|
问题: 有许多不同的数据库,它们直接由许多不同的应用程序填充(没有任何常见的应用程序层).只能通过SP访问数据(按政策) 任务: 应用程序需要跟踪这些数据库中的更改并在最短时间内做出响应 可能的解决方案: 1)为每个数据库中的每个表创建触发器,这将使用事件填充一个表.应用程序将通过SqlDependency观察此表. 2)通过SqlDependency观察每个数据库中的每个表. 3)为每个数据库中的每个表创建触发器,这将使用托管扩展通知应用程序. 哪种方式最好? 解决方法这可能是一个广泛的主题.首先:使用的SQL Server版本是什么?如果您使用的是SQL 2008,那么Change Data Capture就是您的首选工具 如果您使用的是旧版本的SQL 2008,并且您可以修改数据库的DDL,则选项3将是您选择的选项之一(您所描述的那个).我不建议这样做,因为还有其他事情需要考虑,例如当事务回滚时或者当批量插入时触发器被停用时会发生什么? 在所有这些情况下,让您的解决方案正常运行将是一项挑战. 另一种方法是观察事务日志文件.这种方式是迄今为止最好的,也是最复杂的方式,因为几乎没有关于专有日志格式的文档.它也绑定到特定版本的SQL Server.这将导致对所选数据库的无影响监视. 另一种方法是创建要监视的数据的副本,并定期检查是否存在差异. 性能影响相当小,因为它只需要对要监视的表进行主索引连续读取.这是迄今为止与数据库交互的最优化方式. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ssms – SQL Server Management Studio – 多个对象资源管理
- SQL Server 2005开启xp_cmdshell
- sql – 在同一个表中使用其他值更新一列
- sql-server-2005 – 如何在SQL Server 2005中查找视图的派生
- linq-to-sql – Linq to SQL:为每个页面还是全局页面都有一
- 详解SQLServer和Oracle的分页查询
- sql-server – 如何将Nvarchar列转换为INT
- sql-server – SQL语法解析器在Delphi for SQL Server
- sql – Ruby on Rails Where子句小于大于
- SQL Server误区:有关NULL位图的三个误区
