Mislukte SQL Server Agent-taken oplossen met gMSA’s

Van toepassing op: SQL Server op Windows

Overzicht

Dit artikel helpt u bij het oplossen van SQL Server Agent taakstapfouten die beginnen nadat u het SQL Server Agent serviceaccount hebt gewijzigd in een door een groep beheerd serviceaccount (gMSA). Het omvat SQL Server Integration Services (SSIS), onderhoudsplan, back-up, PowerShell en CmdExec-taakstappen die mislukken omdat de nieuwe uitvoeringsidentiteit niet beschikt over de vereiste share-, NTFS-, proxy-, referentie- of pakketmachtigingen.

Voordat u begint, controleert u de vereisten en voert u de controlelijst voor snelle validatie uit in Probleemoplossing SQL Server installatie-, opstart- en verificatiefouten met gMSA's.

Symptomen

  • SQL Server Agent wordt gestart, maar SSIS, onderhoudsplan, back-up, PowerShell of CmdExec-taakstappen mislukken.
  • Taakstappen begonnen te mislukken nadat het SQL Server Agent-serviceaccount was gewijzigd naar een gMSA.
  • Fouten identificeren een ontbrekend onderdeel, bestand, proxy, referentie, share of NTFS-machtiging.

Oorzaak

Een taakstapfout die volgt op een wijziging van een serviceaccount is meestal een toegangsprobleem voor de nieuwe identiteit, niet een probleem met gMSA-wachtwoordbeheer. Taakstappen die geen proxy gebruiken, worden uitgevoerd onder het serviceaccount van SQL Server Agent, dus moet je de gMSA alle machtigingen voor shares, NTFS en de bestemming geven die het vorige account had.

Mislukkingen van SQL Server Agent-taken diagnosticeren

  1. Identificeer het subsysteem met mislukte taakstappen en de eerste actiebare fout in de taakgeschiedenis.
  2. Controleer welke identiteit de stap daadwerkelijk uitvoert: het SQL Server Agent serviceaccount of een proxyaccount. Voor meer informatie, zie Create a SQL Server Agent proxy.
  3. Controleer voor netwerkpaden en doelresources of share- en NTFS-machtigingen worden verleend aan de gMSA in het <DomainName>\<GmsaName>$ formulier, inclusief het afsluitende dollarteken. Vervang <DomainName> en <GmsaName> door de domein- en accountnamen.
  4. Controleer of de gMSA over de vereiste machtigingen voor de doelservice beschikt, zoals een back-updoel, een gekoppelde server of een bestandsshare.

Verwacht resultaat: de uitvoeringsidentiteit heeft expliciete machtigingen voor elke resource die in de taakstap wordt gebruikt.

SQL Server Agent taakfouten oplossen

Gebruik de oplossing die overeenkomt met de eerste actiebare fout in de taakgeschiedenis.

Doelresourcemachtigingen verlenen aan de uitvoeringsidentiteit

  1. Bepaal het account waaronder de mislukte taakstap wordt uitgevoerd:

    • Een CmdExec-taakstap die geen proxy opgeeft die wordt uitgevoerd onder het SQL Server Agent-serviceaccount.
    • Een taakstap waarbij een SQL Server Agent-proxy is opgegeven, wordt uitgevoerd onder het Windows-account dat is opgeslagen in de proxyreferenties.
    • Een Transact-SQL taakstap maakt geen gebruik van een SQL Server Agent proxy. Het wordt uitgevoerd in de beveiligingscontext van de taakeigenaar. Als de taakeigenaar lid is van de sysadmin vaste serverfunctie, wordt de stap uitgevoerd onder het SQL Server Agent serviceaccount, tenzij een andere databasegebruiker is opgegeven.
  2. Verleen de vereiste machtigingen aan de uitvoeringsidentiteit:

    • Als de taakstap wordt uitgevoerd onder het serviceaccount van SQL Server Agent en dat account een gMSA is, geef dan de computeraccountnotatie van de gMSA-identiteit op, inclusief een afsluitend dollarteken ($). Bijvoorbeeld: CONTOSO\SQLAgentSvc$.
    • Als in de taakstap een proxy wordt gebruikt, verleent u machtigingen aan het Windows account dat is gekoppeld aan de proxyreferentie, niet automatisch aan het SQL Server Agent serviceaccount of gMSA.
    • Voor een bestandsshare verleent u alleen de vereiste machtigingen voor de uitvoeringsidentiteit op zowel de SMB-share als de onderliggende NTFS-map.
  3. Als u de identiteit en toegang tot delen wilt controleren, voert u tijdelijk de volgende opdrachten uit in een CmdExec-taakstap die dezelfde run als de configuratie gebruikt als de mislukte stap.

    whoami
    dir "\\FileServer\BackupShare"
    

    Verwacht resultaat: de whoami opdracht retourneert de verwachte uitvoeringsidentiteit en de dir opdracht geeft de inhoud van de share weer.

  4. Verwijder de tijdelijke diagnostische stap na het testen.

De SQL Server Agent-proxy, het aanmeldingsgegeven of de uitvoeringscontext van de taakstap corrigeren

Bekijk de mislukte taakstap en controleer het subsysteem en de instelling Uitvoeren als. Voor een subsysteem dat proxy's ondersteunt, maakt of gebruikt u een proxy die voldoet aan de volgende voorwaarden:

  • Verwijst naar de aanmeldingsgegevens van het vereiste Windows-account.
  • Is ingeschakeld voor het taakstapsubsysteem.
  • Is beschikbaar voor de login of SQL Server Agent-rol die eigenaar is van de taak of deze uitvoert.
  • Gebruikt een account met de machtigingen die zijn vereist voor de taakstap.

Wijs de proxy toe aan de taakstap. Het maken van een proxy verleent geen resourcemachtigingen aan het account dat is opgeslagen in de referentie. Verdeel deze machtigingen afzonderlijk en volg het principe van minimale bevoegdheden. Voor meer informatie, zie Create a SQL Server Agent proxy.

SSIS-machtigings- of pakkettoegangsfouten oplossen

Als een SSIS-taakstap mislukt met machtigings- of pakkettoegangsfouten, controleert u of het account waarop de SSIS-taakstap wordt uitgevoerd, toegang heeft tot de volgende resources:

  • De locatie van het SSIS-pakket.
  • Configuratiebestanden en opdrachtbestanden, indien gebruikt.
  • Bestanden en mappen waarnaar wordt verwezen door het pakket.
  • Netwerkshares.
  • Databases en andere gegevensbronnen.
  • Andere externe resources die vereist zijn voor het pakket.

Als het pakket gevoelige informatie gebruikt die wordt beveiligd door de SSIS-instelling ProtectionLevel , controleert u of het uitvoeringsaccount de vereiste gegevens kan ontsleutelen. Een wijziging in het SQL Server Agent uitvoeringsaccount kan ertoe leiden dat een SSIS-pakket mislukt wanneer het nieuwe account pakketgeheimen niet kan ontsleutelen of geen toegang heeft tot een externe resource. Zie SSIS-pakket wordt niet uitgevoerd wanneer het wordt aangeroepen vanuit een SQL Server Agent taakstap voor meer informatie.

Bevestigde ontbrekende onderdelen installeren of herstellen

Installeer of herstel alleen bevestigde ontbrekende onderdelen en corrigeer de SSIS-implementatie of runtimecompatibiliteit afzonderlijk van de accountwijziging. Als in de taakgeschiedenis een ontbrekend onderdeel wordt geïdentificeerd, controleert u of het onderdeel is geïnstalleerd en beschikbaar is voor de uitvoeringsidentiteit voordat u machtigingen wijzigt. Enkele voorbeelden:

  • SSIS-onderdelen.
  • PowerShell-modules die vereist zijn voor de taak.
  • Aangepaste uitvoerbare bestanden of scripts waarnaar wordt verwezen door cmdExec-taakstappen.
  • Vereiste providers of andere runtime-onderdelen.

Los fouten door ontbrekende onderdelen of runtimefouten afzonderlijk van machtigingsfouten op. Nadat het onderdeel is geïnstalleerd of hersteld, voert u de taak opnieuw uit. Als het nog steeds mislukt, bekijk dan de eerste fout in de taakgeschiedenis waarvoor actie mogelijk is.

Diagnostische gegevens verzamelen

Als de taakstap nog steeds mislukt nadat u deze stappen hebt voltooid, verzamelt u de mislukte taakgeschiedenis en andere diagnostische gegevens voor hetzelfde foutinterval. Zie Diagnostische gegevens verzamelen in het overzicht van het oplossen van problemen met gMSA voor het verzamelen van gMSA-specifieke gegevens en standaardlogboeken SQL Server. Gebruik deze gegevens om door te gaan met het onderzoek of om een ondersteuningsaanvraag te openen.