Блокирует ли репликация репликации базу данных подписчиков?
Мне нужно настроить репликацию слиянием между 2 базами данных. Эти базы данных имеют целостность внешнего ключа, что делает репликацию не работающей, поэтому я прибег к:
- Удаление всех ФК в базе данных подписчиков,
- Репликация и
- Воссоздание ФК.
Это, однако, делает базу данных подписчиков уязвимой для нарушений FK.
Итак, мои вопросы:
- Блокирует ли репликация базу данных подписчиков, вызывает транзакцию и делает базу данных непригодной для использования каким-либо образом во время процесса?
- Если нет, могу ли я инициировать такую блокировку вручную через TSQL?
- Если ничего из вышеперечисленного не возможно, я что-то упускаю?
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: спецификации для доступа в ограниченном режиме