- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:
有很多不同的数据库,它们直接由许多不同的应用程序填充(没有任何通用的应用程序层)。数据只能通过SP访问(根据策略)
任务:
应用程序需要跟踪这些数据库中的更改并在最短的时间内使用react。
可能的解决方案:
1) 为每个数据库中的每个表创建触发器,这将用事件填充一个表。应用程序将通过 SqlDependency 监视该表。
2)通过SqlDependency监视每个数据库中的每个表。
3) 为每个数据库中的每个表创建触发器,这将使用托管扩展通知应用程序。
哪个是最好的方法?
最佳答案
这可能是一个广泛的话题。首先:使用的SQL Server版本是什么?
如果您使用的是 SQL 2008,则更改数据捕获是首选工具这项新功能使您能够监控 SQL 2008 中对数据库所做的每项更改。这包括DDL 更改以及对数据的更改。查看介绍here .
如果您使用的是较旧版本的 SQL 2008,并且允许您修改数据库的 DDL,则选项 3 将是您的选择之一(一旦你描述过)。但我不推荐它,因为还有其他事情需要考虑,例如当事务回滚或批量插入时停用触发器时会发生什么?
让您的解决方案在所有这些情况下正常工作将是一个安静的挑战。
您可以采取的另一种方法是查看事务日志文件。这种方式是迄今为止最好的,但也是最复杂的方式,因为几乎没有关于专有日志格式的文档。它还绑定(bind)到特定版本的 SQL Server。这将导致对所选数据库的监控无影响。
另一种方法是创建要监控的数据副本并定期检查是否存在差异。这样做的好处是无需对源数据库进行任何更改。以及摆脱事务或批量插入问题。最迟在下一次监控运行时您将能够发现更改。
性能影响相当小,因为它只需要对要监视的表进行主索引连续读取。这是迄今为止与数据库交互的最优化的方式。然而,这种方法需要相当大的开发工作。我必须知道,因为这是我近年来的主要关注点。检查here ;)
(我希望链接没问题,在这种情况下,因为它是主题,否则我将其删除)
关于.net - 如何从 .NET 应用程序跟踪许多 SQL Server 数据库中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689200/
我是一名优秀的程序员,十分优秀!