На тестовой установке я пытаюсь заставить SQL Server 2005 работать одноранговую (транзакционную) репликацию, при этом агенты репликации работают под управлением NT AUTHORITY\NETWORK SERVICE
учетная запись.
Перед этим я настраиваю одноранговую репликацию с агентами, работающими под учетной записью службы агента SQL Server (то есть учетной записью SYSTEM), и я создал группу безопасности в AD, содержащую учетные записи компьютеров. Я дал этой группе необходимые разрешения для dbs, PAL, дистрибьютора. Это сработало нормально.
Если я попытаюсь выполнить ту же настройку с агентами, работающими как NT AUTHORITY \ NETWORK SERVICE (или NT AUTHORITY \ NETWORKSERVICE - нет места, я пробовал оба), я вижу следующую ошибку в мониторе репликации:
Невозможно запустить выполнение (причина: ошибка аутентификации прокси Nt Authority \ Network Service, системная ошибка: ошибка входа в систему: неизвестное имя пользователя или неверный пароль)
Я также попытался сделать Network Service логином sql на каждом сервере и назначить ему роль sysadmin. Это не имело значения. Неужели просто невозможно запустить агент репликации как сетевой сервис?
(примечание - я знаю, что могу использовать учетную запись AD с именем пользователя и паролем. По разным причинам мы не хотим этого делать в данном случае)
В интересах Даффмана и всех остальных мы нашли нестандартное решение этой проблемы.
Если вы посмотрите на задания агента SQL Server для каждого агента репликации, в свойствах заданий будут показаны параметры командной строки, необходимые для агентов распространителя (distrib.exe), чтения журнала (logread.exe) и моментальных снимков (snapshot.exe).
Я написал небольшую службу Windows на C #, которая запускает эти агенты с этими параметрами командной строки, и настроил эту службу для запуска под учетной записью сетевой службы. Это прекрасно работает.
Чтобы это сработало, вы должны удалить задания из агента сервера SQL, который запускает агенты репликации. Кроме того, когда агенты запускаются таким образом, инструменты графического интерфейса, которые управляют агентами (например, запускают синхронизацию из монитора репликации), больше не работают, поэтому я добавил некоторые функции в службу Windows, чтобы заменить их.
Но все остальное (предупреждения, отчеты и т. Д.) Вроде нормально. Мы тестировали эту конфигурацию несколько месяцев и не обнаружили в ней никаких проблем.
Обратите внимание: если вы не хотите писать службу Windows, вы можете сделать то же самое с пакетным файлом и запустить его с помощью запланированной задачи или srvany (так мы впервые протестировали его).