Risolvere gli errori dei processi di SQL Server Agent con gli account del servizio gestiti di gruppo (gMSA)

Si applica a: SQL Server su Windows

Sommario

Questo articolo consente di risolvere gli errori dei passaggi di processo di SQL Server Agent che iniziano a verificarsi dopo aver modificato l'account del servizio SQL Server Agent in un account del servizio gestito di gruppo (gMSA). Vengono illustrati SQL Server Integration Services (SSIS), il piano di manutenzione, il backup, PowerShell e i passaggi del processo CmdExec che hanno esito negativo perché la nuova identità di esecuzione non dispone delle autorizzazioni necessarie per condivisione, NTFS, proxy, credenziali o pacchetto.

Prima di iniziare, esaminare i prerequisiti ed eseguire la checklist rapida di convalida in Risolvere i problemi di installazione, avvio e autenticazione di SQL Server con gli account del servizio gestito di gruppo (gMSA).

Symptoms

  • SQL Server Agent viene avviato, ma I passaggi del processo SSIS, piano di manutenzione, backup, PowerShell o CmdExec hanno esito negativo.
  • I passaggi del processo hanno iniziato ad avere esito negativo dopo che l'account del servizio SQL Server Agent è stato modificato in un gMSA.
  • Gli errori identificano un componente, un file, un proxy, credenziali, una condivisione o un'autorizzazione NTFS mancante.

Cause

Un errore in una fase del processo che segue una modifica dell'account di servizio è in genere un problema di accesso della nuova identità, non un problema di gestione della password gMSA. I passaggi del processo che non usano un proxy vengono eseguiti con l'account del servizio SQL Server Agent, quindi concedi al gMSA tutte le autorizzazioni di condivisione, NTFS e di destinazione di cui disponeva l'account precedente.

Diagnosticare gli errori dei processi di SQL Server Agent

  1. Identifica il sottosistema del passaggio del processo non riuscito e il primo errore su cui intervenire nella cronologia del processo.
  2. Verificare quale identità esegue effettivamente il passaggio: l'account del servizio SQL Server Agent o un account proxy. Per altre informazioni, vedere Creare un proxy di SQL Server Agent.
  3. Per i percorsi di rete e per le risorse di destinazione, verificare che le autorizzazioni di condivisione e le autorizzazioni NTFS siano concesse al gMSA nella forma <DomainName>\<GmsaName>$, compreso il simbolo del dollaro finale. Sostituire <DomainName> e <GmsaName> con i nomi di dominio e account.
  4. Verificare che il gMSA disponga delle autorizzazioni necessarie nel servizio di destinazione, ad esempio una destinazione di backup, un server collegato o una condivisione di file.

Risultato previsto: l'identità di esecuzione ha autorizzazioni esplicite per ogni risorsa utilizzata dalla fase del processo.

Risolvere gli errori dei processi di SQL Server Agent

Usa la soluzione che corrisponde al primo errore su cui è possibile intervenire nella cronologia del processo.

Concedere le autorizzazioni di destinazione-risorsa all'identità di esecuzione

  1. Determinare l'account con il quale viene eseguita la fase del processo non riuscita:

    • Un passaggio di un processo CmdExec che non specifica un proxy viene eseguito con l'account del servizio SQL Server Agent.
    • Una fase di un processo che specifica un proxy di SQL Server Agent viene eseguita usando l'account Windows archiviato nella credenziale proxy.
    • Una fase di un processo Transact-SQL non utilizza un proxy di SQL Server Agent. Viene eseguito nel contesto di sicurezza del proprietario del processo. Se il proprietario del processo è membro del ruolo predefinito del sysadmin server, il passaggio viene eseguito con l'account del servizio SQL Server Agent, a meno che non venga specificato un altro utente del database.
  2. Concedi le autorizzazioni necessarie all'identità di esecuzione:

    • Se il passaggio del processo viene eseguito con l'account di servizio di SQL Server Agent e tale account è un gMSA, specificare la forma dell'account computer gMSA dell'identificatore, che include un simbolo del dollaro finale ($). Ad esempio: CONTOSO\SQLAgentSvc$.
    • Se la fase del processo usa un proxy, concedi le autorizzazioni all'account Windows associato alla credenziale proxy, non all'account del servizio SQL Server Agent o al gMSA in modo automatico.
    • Per una condivisione file, concedere solo le autorizzazioni necessarie all'identità di esecuzione sia nella condivisione SMB che nella cartella NTFS sottostante.
  3. Per verificare l'identità e l'accesso alla condivisione, eseguire temporaneamente i comandi seguenti in un passaggio di un processo CmdExec che usa la stessa configurazione Esegui come del passaggio non riuscito.

    whoami
    dir "\\FileServer\BackupShare"
    

    Risultato previsto: il whoami comando restituisce l'identità di esecuzione prevista e il dir comando elenca il contenuto della condivisione.

  4. Rimuovere il passaggio di diagnostica temporaneo dopo il test.

Correggere il contesto di esecuzione del proxy di SQL Server Agent, della credenziale o della fase del processo

Rivedere la fase del processo non riuscita e verificarne il sottosistema e la relativa impostazione Esegui come. Per un sottosistema che supporta proxy, creare o usare un proxy che soddisfi le condizioni seguenti:

  • Fa riferimento a una credenziale per l'account di Windows necessario.
  • È abilitato per il sottosistema delle fasi del processo.
  • È disponibile per l'account di accesso o per il ruolo di SQL Server Agent che possiede o esegue il processo.
  • Usa un account che dispone delle autorizzazioni necessarie per il passaggio del processo.

Assegnare il proxy alla fase del processo. La creazione di un proxy non concede le autorizzazioni per le risorse all'account memorizzato nella credenziale. Concedere queste autorizzazioni separatamente e seguire il principio dei privilegi minimi. Per altre informazioni, vedere Creare un proxy di SQL Server Agent.

Risolvere gli errori di autorizzazione o di accesso ai pacchetti SSIS

Se una fase di un processo SSIS ha esito negativo a causa di errori di autorizzazione o di accesso al pacchetto, verificare che l'account che esegue la fase del processo SSIS possa accedere alle risorse seguenti:

  • La posizione del pacchetto SSIS.
  • File di configurazione e file di comando, se usati.
  • File e cartelle a cui fa riferimento il pacchetto.
  • Condivisioni di rete.
  • Database e altre origini dati.
  • Altre risorse esterne richieste dal pacchetto.

Se il pacchetto usa informazioni riservate protette dall'impostazione SSIS ProtectionLevel , verificare che l'account di esecuzione possa decrittografare le informazioni necessarie. Una modifica all'account di esecuzione SQL Server Agent può causare un errore di un pacchetto SSIS quando il nuovo account non può decrittografare i segreti del pacchetto o non dispone dell'autorizzazione per accedere a una risorsa esterna. Per ulteriori informazioni, vedere Il pacchetto SSIS non viene eseguito quando viene chiamato da un passaggio di un processo di SQL Server Agent.

Installare o ripristinare i componenti mancanti confermati

Installare o ripristinare solo i componenti mancanti confermati e correggere la compatibilità del runtime o della distribuzione SSIS separatamente dalla modifica dell'account. Se la cronologia del processo identifica un componente mancante, verificare che il componente sia installato e disponibile per l'identità di esecuzione prima di modificare le autorizzazioni. Ecco alcuni esempi:

  • Componenti SSIS.
  • Moduli di PowerShell richiesti dal processo.
  • File eseguibili personalizzati o script a cui si fa riferimento tramite i passaggi del processo CmdExec.
  • I provider richiesti o altri componenti di runtime.

Risolvere gli errori di runtime o componenti mancanti separatamente dagli errori di autorizzazione. Dopo l'installazione o il ripristino del componente, eseguire di nuovo il processo. Se il problema persiste, esamina il primo errore risolvibile nella cronologia del processo.

Raccogliere i dati di diagnostica

Se la fase del processo continua a non riuscire dopo aver completato questi passaggi, raccogli la cronologia del processo non riuscito e altri dati diagnostici per lo stesso intervallo di tempo in cui si è verificato l'errore. Per le informazioni specifiche di gMSA e i log standard di SQL Server da raccogliere, vedere Raccogliere dati di diagnostica nella panoramica della risoluzione dei problemi di gMSA. Usa questi dati per continuare l'analisi o per aprire una richiesta di supporto.