【问题标题】:Does merge replication lock subscriber database?合并复制是否锁定订阅者数据库?
【发布时间】:2013-04-26 15:00:47
【问题描述】:
我需要在 2 个数据库之间配置合并复制。这些数据库具有外键完整性,这使得复制不起作用,所以我求助于:
- 删除订阅者数据库中的所有 FK,
- 复制和
- 重新创建 FK。
然而,这会使订阅者数据库容易受到 FK 违规的影响。
所以我的问题是:
- 复制过程中是否会锁定订阅者数据库、引发事务并以任何方式使数据库无法使用?
- 如果没有,我可以通过 TSQL 手动启动这样的锁吗?
- 如果以上都不是可能的,是我遗漏了什么吗?
【问题讨论】:
标签:
sql
foreign-keys
merge-replication
locks
【解决方案1】:
不知道复制启动的锁,但在维护期间,您可以将整个数据库设置为 single_user 或 restricted_user。
ALTER DATABASE SET RESTRICTED_USER
我推荐第二个,因为它允许所有用户访问数据库,引用:
db_owner 固定数据库角色和 dbcreator 的成员和
sysadmin 固定服务器角色
(见此处:http://msdn.microsoft.com/en-us/library/aa933082%28SQL.80%29.aspx)
,只限制普通用户。它将等到所有常规用户连接完成
ALTER DATABASE SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
将立即终止所有此类连接。这个
select DATABASEPROPERTYEX ('ocon_reportdb','UserAccess') DATABASEPROPERTYEX_UserAccess
读取当前状态
更新:
有维护活动,例如由数据库引擎执行的统计信息。使用WITH ROLLBACK IMMEDIATE 也会杀死这些连接,所以要小心
UPDATE2:规范在受限用户模式下的访问权限