Надання доступу до файлової системи до віртуального облікового запису SQLSERVERAGENT


23

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

Як надати цьому обліковому запису послуги доступ до файлової системи? Зокрема, на Windows 7.

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

Не вдалося запустити процес агента 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 Agent - відповідно до коментарів, які я бачив про msdb та входи. Менеджер конфігурацій вносить більше змін до SQL Server, ніж використання аплету Служб Windows - тому для зміни будь-якої служби SQL завжди слід використовувати Менеджер конфігурацій.

Це вирішить проблему, якщо хтось, можливо, змінив обліковий запис у службі Windows, що призведе до відмови служби при запуску. Потрібно скинути її в Менеджері конфігурацій. Це дозволяє Диспетчеру конфігурацій додавати до SQL Server необхідні дозволи для управління базою даних MSDB для облікового запису локальної служби (NT SERVICE \ SQLSERVERAGENT), тоді як зміна облікових записів в аплеті служб Windows не робить.

Попередження: Версії SQL Server Express вище 2000 року не включають агент SQL. Можливо, деякі аспекти цього проекту є, але його не можна використати у експрес-версії продукту.

Для початку відкрийте диспетчер конфігурації SQL Server і двічі клацніть службу агента SQL Server у службах SQL Server. Виберіть перемикач вбудованого облікового запису та виберіть Місцева послуга та натисніть кнопку Застосувати. Важливо : якщо ви вже бачите, що цей обліковий запис вибрано, виберіть інший обліковий запис і натисніть кнопку Застосувати. Потім поверніть його на локальну службу і натисніть кнопку Застосувати, щоб дозволити Менеджеру конфігурацій додати правильні дозволи MSDB для запуску служби агента SQL. Тепер перезапустіть агент SQL Server, щоб відобразити це нове налаштування.

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


1
Мій обліковий запис агента SQL Server був налаштований NT Service\SQLAgent$MyInstanceNameі намагався встановити захист у папці, натиснувши кнопку Перевірити імена, сказав Ім'я не знайдено, і не знайде його. Після багатьох розчарувань я зрозумів, що за замовчуванням "З цього місця" при натисканні кнопки Додати для додання дозволів не було встановлено на моїй локальній машині, вона була встановлена ​​в моєму домені. Змінивши його на моїй локальній машині (самий кореневий вузол у дереві), він дозволив виявити мій NT Service\SQLAgent$MyInstanceNameобліковий запис, щоб додати його до дозволів папки.
NibblyPig

Я отримав "MyInstanceName" з Журналу подій, який реєстрував помилки.
Ясен

2

Я вирішив цю проблему, встановивши обліковий запис для входу агента SQL Server у LocalSystem.


2
Незважаючи на те, що це спосіб вирішити питання, який може налагодити роботу, він, як правило, вважається менш безпечним, ніж використання рішення, запропонованого у цій відповіді
RDFozz

2

Я погоджуюся розчаровує .. мабуть, це так просто, як просто набрати ім’я. http://zarez.net/?p=3187

Резюме: Введіть NT SERVICE \ MSSQLSERVER, а потім не натискайте прапорець, просто натисніть ОК, і ви зможете встановити дозволи папки для облікового запису агента SQL.


1
Ласкаво просимо на DBA SE! Я не проголосував. Ваша відповідь належить до категорії "відповідь лише для посилань". Ці відповіді стають незрозумілими, коли віддалений бік знижується. Рецензенти вашої публікації повинні були сказати це вам, це була їх помилка. Отже: 1) насправді ваша відповідь має відповісти (на запитання вгорі) 2) якщо ви щось цитуєте, переглядаючи веб-сторінку, скопіюйте і вставте її найважливіше також у публікацію. | Я дав вам підсумки, але пропоную зробити переконливим для інших рецензентів.
Peterh каже відновити Моніку

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