合并复制锁订户数据库?

时间:2013-04-26 15:00:48

标签: sql foreign-keys merge-replication locks

我需要在2个数据库之间配置合并复制。这些数据库具有外键完整性,这使得复制不起作用,因此我采用了:

  1. 删除订阅者数据库上的所有FK
  2. 复制,
  3. 重新创建FK。
  4. 但是,这会使订户数据库容易受到FK违规的影响。


    所以我的问题是:

    1. 复制是否会锁定订阅者数据库,引发事务,并在此过程中以任何方式使数据库无法使用?
    2. 如果没有,我可以通过TSQL手动启动这样的锁吗?
    3. 如果以上都不可能,那么我有什么遗漏吗?

1 个答案:

答案 0 :(得分:0)

不了解由复制启动的锁,但是在维护时,您可以将整个数据库设置为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:规范要在restricted_user-mode中进行访问