Rozwiązywanie problemów z niepowodzeniami zadań agenta SQL Server przy użyciu kont gMSA

Dotyczy: SQL Server w Windows

Podsumowanie

Ten artykuł pomaga rozwiązywać problemy z niepowodzeniami kroków zadań agenta SQL Server, które zaczynają występować po zmianie konta usługi agenta SQL Server na grupowe konto usługi zarządzanej (gMSA). Dotyczy to kroków zadań SQL Server Integration Services (SSIS), planów konserwacji, kopii zapasowej, PowerShell i CmdExec, które kończą się niepowodzeniem, ponieważ nowe konto wykonywania nie ma wymaganych uprawnień do udziału sieciowego, systemu plików NTFS, serwera proxy, poświadczeń lub pakietu.

Przed rozpoczęciem zapoznaj się z wymaganiami wstępnymi i uruchom krótką listę kontrolną sprawdzania poprawności opisaną w artykule Rozwiązywanie problemów z konfiguracją, uruchamianiem i błędami uwierzytelniania w programie SQL Server z użyciem kont gMSA.

Symptoms

  • Program SQL Server Agent uruchamia się, ale kroki zadania typu SSIS, planu obsługi, kopii zapasowej, PowerShell lub CmdExec kończą się niepowodzeniem.
  • Etapy zadania zaczęły kończyć się niepowodzeniem po zmianie konta usługi SQL Server Agent na grupowe zarządzane konto usługi (gMSA).
  • Błędy wskazują na brakujący składnik, plik, serwer proxy, poświadczenia, udział lub uprawnienia NTFS.

Przyczyna

Niepowodzenie kroku zadania, które następuje po zmianie konta usługi, jest zwykle problemem z dostępem dla nowej tożsamości, a nie problemu z zarządzaniem hasłami gMSA. Kroki zadania, które nie używają konta proxy, są uruchamiane na koncie usługi SQL Server Agent, więc przyznaj kontu gMSA wszystkie uprawnienia do udziałów, systemu plików NTFS i lokalizacji docelowych, które miało poprzednie konto.

Diagnozowanie błędów zadań SQL Server Agent

  1. Zidentyfikuj podsystem kroku zadania, który zakończył się niepowodzeniem, oraz pierwszy błąd wymagający działania w historii zadania.
  2. Potwierdź, która tożsamość faktycznie uruchamia krok: konto usługi SQL Server Agent lub konto serwera proxy. Więcej informacji można znaleźć w artykule Utworzenie agenta SQL Server proxy.
  3. W przypadku ścieżek sieciowych i zasobów docelowych upewnij się, że uprawnienia udziału i systemu plików NTFS zostały przyznane kontu gMSA w postaci <DomainName>\<GmsaName>$, z uwzględnieniem końcowego znaku dolara. Zastąp <DomainName> i <GmsaName> nazwami domeny i konta.
  4. Upewnij się, że konto gMSA ma wymagane uprawnienia do usługi docelowej, na przykład lokalizacji docelowej kopii zapasowej, serwera połączonego lub udziału plików.

Oczekiwany wynik: tożsamość uruchomieniowa ma jawne uprawnienia do wszystkich zasobów wykorzystywanych przez ten krok zadania.

Rozwiązywanie problemów z niepowodzeniami zadań programu SQL Server Agent

Użyj rozwiązania odpowiadającego pierwszemu błędowi w historii zadania, dla którego można podjąć działanie.

Przyznaj uprawnienia do zasobu docelowego tożsamości wykonawczej

  1. Określ konto, na którym jest uruchamiany krok zadania, w którym wystąpił błąd:

    • Krok zadania CmdExec, który nie określa konta proxy, jest uruchamiany przy użyciu konta usługi SQL Server Agent.
    • Krok zadania określający serwer proxy agenta SQL Server jest uruchamiany przy użyciu konta systemu Windows zapisanego w poświadczeniu serwera proxy.
    • Krok zadania Transact-SQL nie używa konta proxy programu SQL Server Agent. Jest on uruchamiany w kontekście zabezpieczeń właściciela zadania. Jeśli właściciel zadania jest członkiem stałej sysadmin roli serwera, krok jest uruchamiany w ramach konta usługi SQL Server Agent, chyba że określono innego użytkownika bazy danych.
  2. Nadaj wymagane uprawnienia tożsamości wykonawczej:

    • Jeśli krok zadania jest uruchamiany przy użyciu konta usługi SQL Server Agent, a to konto jest kontem gMSA, określ formę tożsamości odpowiadającą kontu komputera gMSA, która zawiera końcowy znak dolara ($). Na przykład CONTOSO\SQLAgentSvc$.
    • Jeśli krok zadania używa serwera proxy, nadaj uprawnienia kontu systemu Windows skojarzonemu z poświadczeniem serwera proxy, a nie automatycznie kontu usługi SQL Server Agent lub gMSA.
    • W przypadku udziału sieciowego przyznaj tożsamości uruchomieniowej tylko wymagane uprawnienia, zarówno do udziału SMB, jak i do bazowego folderu systemu plików NTFS.
  3. Aby zweryfikować tożsamość i udostępniony dostęp, tymczasowo uruchom następujące polecenia w kroku zadania CmdExec, który używa tej samej konfiguracji Run as co krok zakończony niepowodzeniem.

    whoami
    dir "\\FileServer\BackupShare"
    

    Oczekiwany wynik: polecenie whoami zwraca oczekiwaną tożsamość, z którą jest wykonywane, a polecenie dir wyświetla zawartość udziału.

  4. Usuń tymczasowy krok diagnostyczny po przetestowaniu.

Popraw serwer proxy programu SQL Server Agent, poświadczenie lub kontekst wykonywania kroku zadania

Przeanalizuj krok zadania, który zakończył się niepowodzeniem, i sprawdź jego podsystem oraz ustawienie Run as. W przypadku podsystemu obsługującego serwery proxy utwórz lub użyj serwera proxy spełniającego następujące warunki:

  • Wskazuje poświadczenie wymaganego konta systemu Windows.
  • Jest włączona dla podsystemu krok-zadania.
  • Jest dostępny dla konta logowania lub roli agenta SQL Server, które są właścicielem zadania lub je uruchamiają.
  • Używa konta z uprawnieniami wymaganymi przez krok zadania.

Przypisz serwer proxy do kroku zadania. Utworzenie serwera proxy nie przyznaje uprawnień do zasobów kontu przechowywanemu w jego poświadczeniu. Przyznaj te uprawnienia oddzielnie i postępuj zgodnie z zasadą najniższych uprawnień. Więcej informacji można znaleźć w artykule Utworzenie agenta SQL Server proxy.

Rozwiązywanie problemów z uprawnieniami usług SSIS lub błędami dostępu do pakietów

Jeśli krok zadania SSIS nie powiedzie się z powodu błędów uprawnień lub dostępu do pakietu, sprawdź, czy konto uruchamiające krok zadania SSIS może uzyskać dostęp do następujących zasobów:

  • Lokalizacja pakietu usług SSIS.
  • Pliki konfiguracji i pliki poleceń, jeśli są używane.
  • Pliki i foldery, do których odwołuje się pakiet.
  • Udziały sieciowe.
  • Bazy danych i inne źródła danych.
  • Inne zasoby zewnętrzne wymagane przez pakiet.

Jeśli pakiet używa poufnych informacji chronionych przez ustawienie SSIS ProtectionLevel, sprawdź, czy konto wykonawcze może odszyfrować wymagane informacje. Zmiana konta uruchamiania programu SQL Server Agent może spowodować niepowodzenie wykonania pakietu SSIS, gdy nowe konto nie może odszyfrować poufnych danych pakietu lub nie ma uprawnień do uzyskania dostępu do zasobu zewnętrznego. Aby uzyskać więcej informacji, zobacz temat Pakiet SSIS nie jest uruchamiany po wywołaniu z poziomu kroku zadania Agenta programu SQL Server.

Instalowanie lub naprawianie potwierdzonych brakujących składników

Instaluj lub naprawiaj tylko komponenty, których brak został potwierdzony, a zgodność wdrożenia SSIS lub środowiska uruchomieniowego koryguj oddzielnie od zmiany konta. Jeśli historia zadań identyfikuje brakujący składnik, przed zmianą uprawnień sprawdź, czy składnik jest zainstalowany i dostępny dla tożsamości wykonywania. Oto kilka przykładów:

  • Komponenty SSIS.
  • Moduły programu PowerShell wymagane przez zadanie.
  • Niestandardowe pliki wykonywalne lub skrypty, do których odwołuje się procedura zadania CmdExec.
  • Wymagani dostawcy lub inne składniki środowiska uruchomieniowego.

Rozwiązuj błędy związane z brakującymi komponentami lub błędy środowiska uruchomieniowego oddzielnie od błędów uprawnień. Po zainstalowaniu lub naprawieniu składnika uruchom ponownie zadanie. Jeśli problem nadal występuje, sprawdź pierwszy błąd wymagający działania w historii zadania.

Zbieranie danych diagnostycznych

Jeśli krok zadania nadal kończy się niepowodzeniem po wykonaniu tych kroków, zbierz historię zadań zakończonych niepowodzeniem i inne dane diagnostyczne dla tego samego interwału niepowodzenia. Informacje o danych specyficznych dla gMSA i standardowych dziennikach programu SQL Server, które należy zebrać, można znaleźć w sekcji Zbieranie danych diagnostycznych w omówieniu rozwiązywania problemów z usługą gMSA. Użyj tych danych, aby kontynuować dochodzenie lub otworzyć zgłoszenie do działu pomocy technicznej.