如何跟踪.NET应用程序中许多SQL Server数据库的更改?
问题:
有许多不同的数据库,它们直接由许多不同的应用程序填充(没有任何常见的应用程序层).只能通过SP访问数据(按政策) 任务: 应用程序需要跟踪这些数据库中的更改并在最短时间内做出响应 可能的解决方案: 1)为每个数据库中的每个表创建触发器,这将使用事件填充一个表.应用程序将通过SqlDependency观察此表. 2)通过SqlDependency观察每个数据库中的每个表. 3)为每个数据库中的每个表创建触发器,这将使用托管扩展通知应用程序. 哪种方式最好? 解决方法这可能是一个广泛的主题.首先:使用的SQL Server版本是什么?如果您使用的是SQL 2008,那么Change Data Capture就是您的首选工具 如果您使用的是旧版本的SQL 2008,并且您可以修改数据库的DDL,则选项3将是您选择的选项之一(您所描述的那个).我不建议这样做,因为还有其他事情需要考虑,例如当事务回滚时或者当批量插入时触发器被停用时会发生什么? 在所有这些情况下,让您的解决方案正常运行将是一项挑战. 另一种方法是观察事务日志文件.这种方式是迄今为止最好的,也是最复杂的方式,因为几乎没有关于专有日志格式的文档.它也绑定到特定版本的SQL Server.这将导致对所选数据库的无影响监视. 另一种方法是创建要监视的数据的副本,并定期检查是否存在差异. 性能影响相当小,因为它只需要对要监视的表进行主索引连续读取.这是迄今为止与数据库交互的最优化方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 执行计划显示昂贵的CONVERT_IMPLI
- SQLserver 如何把一个库里的表转移到另一个库里
- sql-server – 如何查找导致tempdb增长的SQL语句
- SQLServer 定位CPU使用较高的用户和SQL
- SQL Server 2000中“db_owner”和“拥有数据库的
- SQL2000个人版 应用程序正常初始化失败0乘以C000
- sql-server-2008 – 简单语法:Alter Table语句中
- sql-server – 我需要收缩我的数据库 – 我只是释
- REAL软件发布了REALbasic 2008 Release 5(多国语
- MySQL两种临时表的用法详解