2013-04-26 3 views
0

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

  1. Бросив все FKs на абонентской базе,
  2. Репликация и
  3. Воссоздание FKs.

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


Так что мои вопросы:

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

ответ

0

не знаю о блокировке, инициированной репликацией, но на время вашего обслуживания вы можете установить всю базу данных на single_user или limited_user.

ALTER DATABASE SET RESTRICTED_USER 

я рекомендую второй, поскольку это позволяет получить доступ к базе данных для всех пользователей, которые, цитирую:

члены db_owner фиксированной роли базы данных и DBCreator и системного администратора фиксированной роли сервера

(см здесь: 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: есть охранение мероприятия, такие как статистика, выполняемого ядро ​​базы данных. используя WITH ROLLBACK IMMEDIATE также убить этих соединений, так что будьте осторожны

UPDATE2: спецификации иметь в restricted_user-доступ режиме

+0

спасибо. Он отлично работал. –

 Смежные вопросы

  • Нет связанных вопросов^_^