Блокирует ли репликация репликации базу данных подписчиков?

Мне нужно настроить репликацию слиянием между 2 базами данных. Эти базы данных имеют целостность внешнего ключа, что делает репликацию не работающей, поэтому я прибег к:

  1. Удаление всех ФК в базе данных подписчиков,
  2. Репликация и
  3. Воссоздание ФК.

Это, однако, делает базу данных подписчиков уязвимой для нарушений FK.


Итак, мои вопросы:

  1. Блокирует ли репликация базу данных подписчиков, вызывает транзакцию и делает базу данных непригодной для использования каким-либо образом во время процесса?
  2. Если нет, могу ли я инициировать такую ​​блокировку вручную через TSQL?
  3. Если ничего из вышеперечисленного не возможно, я что-то упускаю?

1 ответ

Решение

Не знаю о блокировке, инициированной репликацией, но на время вашего обслуживания вы можете установить для всей базы данных значение single_user или limited_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 также убьет эти соединения, так что будьте осторожны

ОБНОВЛЕНИЕ2: спецификации для доступа в ограниченном режиме

Другие вопросы по тегам