gpt4 book ai didi

.net - 如何从 .NET 应用程序跟踪许多 SQL Server 数据库中的更改?

转载 作者:行者123 更新时间:2023-12-02 16:33:17 26 4
gpt4 key购买 nike

问题:

有很多不同的数据库,它们直接由许多不同的应用程序填充(没有任何通用的应用程序层)。数据只能通过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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com