Zapewnienie dostępu systemu plików do konta wirtualnego SQLSERVERAGENT


23

Usiłuję udzielić NT Service\SQLSERVERAGENTdostępu do systemu plików konta Windows na podstawie zaznaczonej odpowiedzi w tym pytaniu . Uważam, że jest to konto usługi wirtualnej i nie wyświetla się w panelu sterowania -> obszar kont użytkowników .

Jak przyznać to konto usługi dostęp do systemu plików? W szczególności w systemie Windows 7.

Przeczytałem kilka podejść i żadne nie wydaje się być dla mnie opcją. Wypróbowałem podejście PowerShell, ale polecenia AD nie były prawidłowymi poleceniami. Nawet pobrałem i zainstalowałem wymaganą łatę systemu Windows dla tych poleceń. Przeczytałem również, że powinienem to zrobić za pomocą SQL Server Configuration Manager lub Management Studio. Wydaje mi się jednak, że nie wiem, gdzie dostosować te uprawnienia.

Proces agenta programu SQL Server nie uruchamia się, pojawia się następujący komunikat o błędzie:

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

W oparciu o mój Google, ma to związek z uprawnieniami tego konta.

Nie jestem pewien, czy baza danych jest uszkodzona, ale mówi, że baza danych ma status Normalny . Logowanie do agenta SQL Server jest częścią grup sysadmini public.

Odpowiedzi:


18

Aby szczegółowo odpowiedzieć na twoje pytanie , oto sposób, w jaki przyznajesz prawa dostępu do dysku wbudowanemu kontowi SQL Server Agent. Ale czytaj dalej, gdy odpowiadam na to, co uważam za prawdziwy problem:

1.> Kliknij prawym przyciskiem myszy dysk, wybierz właściwości, kliknij przycisk Dodaj i wprowadź konto SQLSERVERAGENT (upewnij się, że domena nie jest zaznaczona w polu tekstowym Z tej lokalizacji, a raczej nazwa komputera):

wprowadź opis zdjęcia tutaj

2.> Kliknij przycisk Sprawdź nazwy, aby sprawdzić poprawność konta:

wprowadź opis zdjęcia tutaj

3.> Teraz dodaj potrzebne uprawnienia do pliku do konta SQLSERVERAGENT. W celu rozwiązywania problemów możesz dać pełną kontrolę, a następnie skalować ją w razie potrzeby później:

wprowadź opis zdjęcia tutaj

To powiedziawszy , prawdopodobnie wystarczy użyć SQL Server Configuration Manger, aby ponownie dodać użytkownika SQL Agent - zgodnie z komentarzami, które widziałem o msdb i logowaniach. Menedżer konfiguracji wprowadza więcej zmian w programie SQL Server niż przy użyciu apletu usług systemu Windows - dlatego należy zawsze używać programu Menedżer konfiguracji do zmiany DOWOLNEJ usługi SQL.

To rozwiąże problem, jeśli ktoś mógł zmienić konto w usługach systemu Windows, powodując awarię usługi podczas uruchamiania. Musisz go zresetować w programie Configuration Manager. Dzięki temu Menedżer konfiguracji może dodać do SQL Server bardzo potrzebne uprawnienia do zarządzania bazą danych MSDB dla konta usługi lokalnej (NT SERVICE \ SQLSERVERAGENT), podczas gdy zmiana kont w aplecie usług Windows nie.

Uwaga: wersje SQL Server Express powyżej 2000 nie zawierają agenta SQL. Może się wydawać, że niektóre aspekty tego istnieją, ale nie można go użyć w ekspresowej wersji produktu.

Aby rozpocząć, otwórz SQL Server Configuration Manager i kliknij dwukrotnie usługę SQL Server Agent w SQL Server Services. Wybierz przycisk opcji Konto wbudowane, wybierz opcję Usługa lokalna i kliknij przycisk Zastosuj. Ważne : jeśli już widzisz, że to konto jest zaznaczone, wybierz inne konto i kliknij przycisk Zastosuj. Następnie zmień go z powrotem na usługę lokalną i kliknij przycisk Zastosuj, aby zezwolić programowi Menedżer konfiguracji na dodanie poprawnych uprawnień MSDB do uruchomienia usługi agenta SQL. Teraz uruchom ponownie SQL Server Agent, aby odzwierciedlić to nowe ustawienie.

wprowadź opis zdjęcia tutaj


1
Moje konto SQL Server Agent zostało ustawione NT Service\SQLAgent$MyInstanceNamei próba ustawienia bezpieczeństwa folderu i naciśnięcie przycisku Sprawdź nazwy powiedziało, że nazwa nie została znaleziona i nie można jej znaleźć. Po wielu frustracjach zdałem sobie sprawę, że domyślna opcja „Z tej lokalizacji” po naciśnięciu przycisku Dodaj, aby dodać uprawnienia, nie była ustawiona na moim komputerze lokalnym, lecz na moją domenę. Zmiana go na moją maszynę lokalną (sam węzeł główny w drzewie) pozwoliła mu wykryć moje NT Service\SQLAgent$MyInstanceNamekonto i dodać go do uprawnień do folderu.
NibblyPig

Otrzymałem „MyInstanceName” z dziennika zdarzeń, który zarejestrował błędy.
Jasen

2

Rozwiązałem ten problem, ustawiając konto logowania agenta SQL Server na LocalSystem.


2
Chociaż jest to obejście, które może sprawić, że wszystko
zacznie

2

Zgadzam się, że frustracja… najwyraźniej jest tak prosta, jak tylko wpisanie nazwy. http://zarez.net/?p=3187

Podsumowanie: wpisz NT SERVICE \ MSSQLSERVER, a następnie nie klikaj sprawdź nazwę, po prostu naciśnij OK i możesz ustawić uprawnienia do folderu dla konta agenta SQL.


1
Witamy w DBA SE! Nie głosowałem za odrzuceniem. Twoja odpowiedź należy do kategorii „odpowiedź tylko link”. Odpowiedzi te stają się niezrozumiałe, gdy strona zdalna spada. Recenzenci twojego postu powinni ci to powiedzieć, to był ich błąd. Tak więc: 1) twoja odpowiedź powinna faktycznie być odpowiedzią (na pytanie u góry) 2) jeśli cytujesz coś, odsyłając do strony internetowej, skopiuj i wklej jej najważniejsze także w poście. | Dałem ci głos, ale proponuję przekonać innych recenzentów.
Peter mówi, że przywróć Monikę

Doskonała rada @ Peter, dziękuję, że jesteś bardzo pomocny. V Jason, dodałem podsumowanie twojego komentarza do twojej odpowiedzi - to może wystarczyć, ale możesz przejrzeć, czy chcesz dodać coś jeszcze. Wszystkie ulepszenia są mile widziane!
Jack Douglas
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.