Предоставление файловой системе доступа к виртуальной учетной записи SQLSERVERAGENT


23

Я пытаюсь предоставить NT Service\SQLSERVERAGENTдоступ к файловой системе учетной записи Windows, основываясь на помеченном ответе на этот вопрос . Я считаю, что это виртуальная учетная запись службы, и она не отображается в панели управления -> области учетных записей пользователей .

Как мне предоставить этой учетной записи службы доступ к файловой системе? В частности, на Windows 7.

Я прочитал несколько подходов, и ни один, кажется, не вариант для меня. Я попробовал подход PowerShell, но команды AD не были действительными командами. Я даже скачал и установил необходимый патч Windows для этих команд. Я также прочитал, что я должен быть в состоянии сделать это с помощью диспетчера конфигурации SQL Server или Management Studio. Я не могу понять, где настроить эти разрешения, хотя.

Процесс агента SQL Server не запускается со следующим сообщением об ошибке:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

Основываясь на моем Google, это связано с разрешениями этой учетной записи.

Я не уверен, что база данных повреждена, но он говорит, что база данных находится в нормальном состоянии. Логин агента SQL Server является частью sysadminи publicгрупп.

Ответы:


18

Чтобы конкретно ответить на ваш вопрос , вот как вы предоставляете права доступа к диску встроенной учетной записи агента SQL Server. Но продолжайте читать, когда я отвечу на то, что я считаю реальной проблемой:

1.> Щелкните правой кнопкой мыши диск, выберите «Свойства», нажмите кнопку «Добавить» и войдите в учетную запись SQLSERVERAGENT (убедитесь, что в текстовом поле «От этого местоположения» выбран домен, а не имя вашего компьютера):

введите описание изображения здесь

2.> Нажмите кнопку Проверить имена, чтобы подтвердить, что учетная запись действительна:

введите описание изображения здесь

3.> Теперь добавьте необходимые права доступа к файлу в учетную запись SQLSERVERAGENT. В целях устранения неполадок вы можете предоставить полный контроль, а затем уменьшить его при необходимости:

введите описание изображения здесь

При этом вам, вероятно, просто нужно использовать диспетчер конфигурации SQL Server для повторного добавления пользователя агента SQL - согласно комментариям, которые я видел по поводу msdb и имен входа. Configuration Manager вносит больше изменений в SQL Server, чем при использовании апплета Windows Services, поэтому Configuration Manager всегда следует использовать для изменения ЛЮБОЙ службы SQL.

Это решит проблему, если кто-то может изменить учетную запись в службах Windows, что приведет к сбою службы при запуске. Вам необходимо сбросить его в Configuration Manager. Это позволяет Configuration Manager добавить в SQL Server столь необходимые разрешения для управления базой данных MSDB для учетной записи локальной службы (NT SERVICE \ SQLSERVERAGENT), а изменение учетных записей в апплете служб Windows - нет.

Предостережение: версии SQL Server Express выше 2000 не содержат агента SQL. Некоторые аспекты этого могут показаться, но его нельзя использовать в Express-версии продукта.

Для начала откройте диспетчер конфигурации SQL Server и дважды щелкните службу агента SQL Server в службах SQL Server. Установите переключатель «Встроенная учетная запись», выберите «Местная служба» и нажмите кнопку «Применить». Важно : если вы уже видите, что эта учетная запись выбрана, выберите другую учетную запись и нажмите кнопку «Применить». Затем измените его обратно на «Локальная служба» и нажмите кнопку «Применить», чтобы Configuration Manager мог добавить правильные разрешения MSDB для запуска службы агента SQL. Теперь перезапустите агент SQL Server, чтобы отразить этот новый параметр.

введите описание изображения здесь


1
Моя учетная запись агента SQL Server была установлена ​​на NT Service\SQLAgent$MyInstanceNameи пытается установить безопасность для папки, и нажав Проверка имен сказал, что Имя не найдено и не может его найти. После большого разочарования я понял, что по умолчанию «From This Location» при нажатии Add для добавления разрешений не было установлено для моей локальной машины, оно было установлено для моего домена. Изменение его на мой локальный компьютер (тот самый корневой узел в дереве) позволил ему обнаружить мою NT Service\SQLAgent$MyInstanceNameучетную запись, чтобы добавить ее в папку разрешений.
NibblyPig

Я получил «MyInstanceName» из журнала событий, в котором регистрировались ошибки.
Jasen

2

Я решил эту проблему, установив учетную запись входа агента SQL Server в LocalSystem.


2
Несмотря на то, что это обходной путь, который может все запустить и запустить, обычно он считается менее безопасным, чем использование решения, предложенного в этом ответе
RDFozz

2

Я согласен расстраивать .. видимо это так просто, как просто набрать имя. http://zarez.net/?p=3187

Сводка: введите NT SERVICE \ MSSQLSERVER, а затем не нажимайте кнопку проверки имени, просто нажмите кнопку ОК, и вы сможете установить разрешения для папки для учетной записи агента SQL.


1
Добро пожаловать на DBA SE! Я не голосовал против. Ваш ответ попадает в категорию "только для ссылок". Эти ответы становятся непонятными, когда удаленная сторона опускается. Рецензенты вашего поста должны были сказать это вам, это была их ошибка. Итак: 1) ваш ответ на самом деле должен быть ответом (на вопрос сверху) 2) если вы цитируете что-либо, ссылаясь на веб-страницу, скопируйте и вставьте ее самое важное в сообщение. | Я дал вам голос, но предлагаю убедить других рецензентов.
Петер говорит восстановить Монику

Отличный совет @peterh, спасибо за помощь. V Джейсон, я добавил резюме из вашего комментария в ваш ответ - этого может быть достаточно, но вы можете просмотреть, чтобы увидеть, хотите ли вы добавить что-нибудь еще. Все улучшения приветствуются!
Джек Дуглас
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.