我需要在 2 个数据库之间配置合并复制。这些数据库具有外键完整性,这使得复制不起作用,所以我求助于:
- 删除订阅者数据库上的所有 FK,
- 复制和
- 重新创建 FK。
然而,这会使订阅者数据库容易受到 FK 违规的影响。
所以我的问题是:
- 复制是否会锁定订阅者数据库、引发事务并在此过程中以任何方式使数据库无法使用?
- 如果没有,我可以通过 TSQL 手动启动这样的锁吗?
- 如果以上都不可能,我有什么遗漏吗?
我需要在 2 个数据库之间配置合并复制。这些数据库具有外键完整性,这使得复制不起作用,所以我求助于:
然而,这会使订阅者数据库容易受到 FK 违规的影响。
所以我的问题是:
不知道复制启动的锁,但是在维护期间,您可以将整个数据库设置为 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
读取当前状态
UPDATE:有维护活动,例如由数据库引擎执行的统计信息。usingWITH ROLLBACK IMMEDIATE
也会杀死这些连接,所以要小心
UPDATE2:在受限用户模式下访问的规范