我的 Web 应用程序针对 SQL Server 2008 使用 ADO.NET。数据库写入发生在主(发布者)数据库上,但读取在主数据库和辅助(订阅者)数据库之间进行负载平衡。我们使用 SQL Server 的内置事务复制来使辅助服务器保持最新。大多数时候,几秒钟的延迟不是问题。
但是,我确实有一个案例,我想阻止直到事务在辅助站点提交。阻止几秒钟是可以的,但将陈旧的页面返回给用户则不行。ADO.NET 或 TSQL 中是否有任何方法可以指定我要等待复制完成?或者我可以从发布者那里检查事务的复制状态,而无需手动连接到辅助服务器。
[编辑] 99.9% 的时间,订阅者中的数据“足够新鲜”。但是有一种操作会使它无效。我不能每次都从出版商那里读到它,因为它已经失效了。如果我不能在事务复制下解决这个问题,你能建议一个替代架构吗?