SQL事务复制 - 初始快照放置表锁?

时间:2015-08-27 23:28:35

标签: sql-server transactional-replication

在配置SQL Server时生成初始快照 事务复制,是否有人知道快照代理是否对您选择的表(文章)置锁?我有一些包含2亿多行的表,并想知道SQL Server是否实际放置表锁以防止在发布数据库联机时进行更新。如果放置了锁,那么我想在生产中的非高峰时段运行初始快照。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您在支持数据库快照的SQL Server版本上运行(如create database [foo]... as snapshot of [bar]中所述),则可以选择使用这些作为快照的基础。检查sp_addpublication的@sync_method参数。需要注意的是,由于数据库快照的工作方式(即写入时复制会减慢任何写入活动),您仍然可能希望在一天中的非繁忙时段执行此操作(但是写入时写入会减慢任何写入活动),但您不会参与竞争关于锁。

答案 1 :(得分:0)

启动SQL Server 2005时,sp_addpublication的默认@sync_method值为“concurrent”,这意味着在snaphsot代理运行期间表不会被锁定。请注意,这并非完全正确 - 快照代理会在表上放置架构锁,但该锁的持续时间最多只需几秒钟。

因此,如果你设置@sync_method =“concurrent”,那么理论上不会阻止更新。如果@sync_method =“native”(SQL Server 2000中的默认值)或“character”,则是,更新将被阻止。