dat*_*000 3 replication database-design sql-server sql-server-2016
我正在研究一种解决方案,该解决方案将允许刷新报告表,从而可能让用户在需要刷新时读取它。有没有人实现了这样一种方法,而无需在刷新时终止用户与该表的连接?
当然。最简单的方法是确保报告用户使用行版本控制,无论是在 SNAPSHOT ISOLATION 中,还是通过将数据库设置为 READ_COMMITTED_SNAPSHOT。参见例如SQL Server 中的快照隔离。
然后只需在事务中进行更新。报告用户不会被阻止,并且会继续看到您更改的每一行的“旧”版本,直到您提交事务。
如果更改需要很长时间,您也可以构建新表,完成后启动一个事务,在其中删除和重命名表,或执行 ALTER TABLE ... SWITCH 将表数据切换到临时表,并将新数据切换到目标表中。