gpt4 book ai didi

tsql - 等待 ADO.NET 或 TSQL 中的事务复制

转载 作者:行者123 更新时间:2023-12-03 02:31:33 27 4
gpt4 key购买 nike

我的 Web 应用程序针对 SQL Server 2008 使用 ADO.NET。数据库写入针对主(发布者)数据库进行,但读取在主和辅助(订阅者)数据库之间进行负载平衡。我们使用 SQL Server 的内置事务复制来保持辅助数据库最新。大多数时候,几秒的延迟不是问题。

但是,我确实有一种情况,我想阻止直到事务在辅助站点上提交。阻塞几秒钟是可以的,但向用户返回过时的页面则不行。 ADO.NET 或 TSQL 中有什么方法可以指定我要等待复制完成吗?或者我可以从发布者处检查事务的复制状态,而无需手动连接到辅助服务器。

[编辑]99.9%的情况下,订阅者中的数据是“足够新鲜”的。但有一项操作会使其失效。我不能每次都从出版商那里读取它,以防它变得无效。如果我在事务复制下无法解决这个问题,您能建议一个替代架构吗?

最佳答案

SQL Server 没有这样的解决方案,但以下是我在其他环境中解决该问题的方法。

在应用程序中使用三个单独的连接字符串,并根据查询的需要选择正确的连接字符串:

  • 实时 - 直接指向一台主服务器。所有写入都进入此连接字符串,只有最关键的读取才进入此处。
  • 近实时 - 指向负载平衡的订阅者池。这里没有写入,只有读取。用于绝大多数 OLTP 读取。
  • 延迟报告 - 在您目前的环境中,它将指向相同的负载平衡订阅者池,但以后您可以使用日志传送等技术来让服务器池延迟 8-24 小时。这些扩展确实很好,但数据却远远落后。它非常适合报告、搜索、长期历史记录和其他非实时需求。

如果您将应用设计为从一开始就使用这 3 个连接字符串,则扩展会容易得多,尤其是在您遇到的情况下。

关于tsql - 等待 ADO.NET 或 TSQL 中的事务复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068631/

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