Разрешения, необходимые для запуска REPLMERG.EXE - PullRequest
0 голосов
/ 21 мая 2010

Мы используем репликацию слиянием в одной из наших программ, и я хотел бы разрешить нашим пользователям принудительно синхронизировать свои ноутбуки с издателем по мере необходимости (мы используем принудительную подписку). Я получил это с помощью REPLMERG.EXE ( см. Мой предыдущий вопрос ).

Однако, когда пользователи запускают скрипт, они получают следующее сообщение об ошибке:

Только члены ролей sysadmin или db_owner могут выполнять эту операцию.
...
exec sp_MSreplcheck_subscribe
...

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

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

Ответы [ 3 ]

2 голосов
/ 21 мая 2010

От Модель безопасности агента репликации :

Агент слияния для получения подписки по запросу

Учетная запись Windows, под которой работает агентиспользуется, когда он устанавливает соединение с подписчиком.Эта учетная запись должна, как минимум, быть членом предопределенной роли базы данных db_owner в базе данных подписка .

Учетная запись, используемая для подключения к издателю и распространителю, должна:

  • Быть членом PAL.
  • Быть логином, связанным с пользователем в базе данных публикации.
  • Быть логином, связанным с пользователем вбаза данных распространения.Пользователь может быть пользователем «Гость».
  • Имеют разрешения на чтение общего ресурса моментального снимка.

Поэтому задокументированное требование репликации слиянием состоит в том, что учетная запись, на которой работает агент репликации (replmerge.exe) быть участником db_owner.Если вам это не подходит для вашей ситуации, то репликация слиянием не является подходящей технологией для использования, поскольку у нее есть требование, которое вы не можете заполнить.

Теперь в теории приложение может делать то же, что REPLMERGE делает из другого приложения,и вы можете использовать возможности подписывания кода для запуска набора процедур-оболочек, которым предоставлены привилегии dbo через подписывание кода, поэтому не требуется повышенный вход в систему, но это только теория, поскольку процедуры репликации не совсем просты в использовании и не документированы.на уровне нужно заново внедрить агентов ...

0 голосов
/ 25 мая 2010

Как отмечают Ремус и Филипп, db_owner в db подписки является жестким требованием для синхронизации push-подписки слиянием. Однако мы действительно хотели позволить нашим пользователям синхронизировать их собственный ноутбук, не предоставляя им полных прав db_owner на базу данных.

Наше решение состояло в том, чтобы включить аутентификацию в смешанном режиме для подписчиков и добавить пользователя SQL Server, единственной целью которого было дать нашим конечным пользователям возможность синхронизировать свои ноутбуки. Пользователь SQL Server 'syncuser' получил роль db_owner в локальной базе данных подписки. Затем, когда мы вызвали replmerg.exe изнутри программы, мы указали следующие параметры:

-SubscriberSecurityMode 0 -SubscriberLogin syncuser -SubscriberPassword 4w3 $ 0m3_P4 $$ w0Rd

0 голосов
/ 24 мая 2010

Подписчик должен иметь право тиражировать инструкции по определению данных, отправленные издателю. Некоторые из этих инструкций могут даже привести к повторной инициализации подписчика, что требует права на удаление \ воссоздание соответствующей базы данных. В этих условиях требования безопасности, установленные Microsoft, звучат вполне разумно.

...