Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare SQL Server Agent per eseguire script di SQL Server PowerShell in orari pianificati.
Annotazioni
Sono disponibili due moduli di SQL Server PowerShell. SqlServer e SQLPS.
Il modulo SqlServer è il modulo di PowerShell corrente da usare.
Il modulo SQLPS è incluso nell'installazione di SQL Server (per compatibilità con le versioni precedenti) ma non viene più aggiornato.
Il modulo SqlServer contiene versioni aggiornate dei cmdlet in SQLPS e include nuovi cmdlet per supportare le funzionalità SQL più recenti.
Installare il modulo SqlServer da PowerShell Gallery.
Per altre informazioni, vedere SQL Server PowerShell.
A partire da SQL Server 2019, è possibile disabilitare SQLPS. Nella prima riga di un passaggio di processo del tipo PowerShell è possibile aggiungere #NOSQLPS
, che impedisce a SQL Agent di caricare automaticamente il modulo SQLPS. Ora il processo di SQL Agent esegue la versione di PowerShell installata nel computer e quindi è possibile usare qualsiasi altro modulo di PowerShell desiderato.
Per usare il modulo SqlServer nel passaggio di un processo di SQL Agent, è possibile inserire questo codice nelle prime due righe dello script.
#NOSQLPS
Import-Module -Name SqlServer
Eseguire PowerShell da SQL Server Agent
Sono disponibili molti tipi di passaggi del processo di SQL Server Agent. Ogni tipo è associato a un sottosistema che implementa un ambiente specifico, ad esempio un agente di replica o un ambiente del prompt dei comandi. È possibile codificare gli script di Windows PowerShell, quindi usare SQL Server Agent per includere gli script nei processi eseguiti in base a orari pianificati o in risposta a eventi di SQL Server. È possibile eseguire gli script di Windows PowerShell con un passaggio del processo del prompt dei comandi o di PowerShell.
Usare un passaggio del processo di PowerShell per fare in modo che il sottosistema SQL Server Agent esegua l'utilità sqlps , che avvia PowerShell e importa il modulo sqlps . Se si esegue SQL Server 2019 o versione successiva, è consigliabile usare il modulo SqlServer nel passaggio processo di SQL Agent.
Usare un passaggio del processo del prompt dei comandi per eseguire PowerShell.exee specificare uno script che importa il modulo sqlps .
Attenzione al consumo di memoria
Ogni passaggio del processo di SQL Server Agent che esegue PowerShell con il modulo sqlps avvia un processo che utilizza circa 20 MB di memoria. L'esecuzione simultanea di numerosi passaggi del processo di Windows PowerShell può avere un impatto negativo sulle prestazioni.
Creare un passaggio del processo di PowerShell
Creare un passaggio di processo di PowerShell
Espandere SQL Server Agent, creare un nuovo processo o fare clic con il pulsante destro del mouse su un processo esistente e quindi scegliere Proprietà. Per altre informazioni sulla creazione di un processo, vedere /sql/ssms/agent/create-jobs.
Nella finestra di dialogo Proprietà processo selezionare la pagina Passaggi e quindi selezionare Nuovo.
Nella finestra di dialogo Nuovo Passaggio Lavoro, digitare un nome per il passaggio.
Nell'elenco Tipo selezionare PowerShell.
Nell'elenco Esegui come, selezionare l'account proxy con le credenziali che verranno usate dall'attività.
Nella casella Comando immettere la sintassi dello script di PowerShell che verrà eseguita per il passaggio del processo. In alternativa, selezionare Apri e selezionare un file contenente la sintassi dello script.
Selezionare la pagina Avanzate per impostare le opzioni seguenti per il passaggio del processo: quale azione eseguire se il passaggio del processo ha esito positivo o negativo, quante volte SQL Server Agent deve tentare di eseguire il passaggio del processo e con quale frequenza devono essere eseguiti nuovi tentativi.
Creare un passaggio del processo del prompt dei comandi
Creare un passaggio del processo CmdExec
Espandere SQL Server Agent, creare un nuovo processo o fare clic con il pulsante destro del mouse su un processo esistente e quindi scegliere Proprietà. Per altre informazioni sulla creazione di un processo, vedere /sql/ssms/agent/create-jobs.
Nella finestra di dialogo Proprietà processo selezionare la pagina Passaggi e quindi selezionare Nuovo.
Nella finestra di dialogo Nuovo Passaggio Lavoro, digitare un nome per il passaggio.
Nell'elenco Tipo scegliere Sistema operativo (CmdExec).
Nell'elenco Esegui come, seleziona l'account proxy con le credenziali che il processo utilizzerà. Per impostazione predefinita, i passaggi del processo CmdExec vengono eseguiti nel contesto dell'account del servizio SQL Server Agent.
Nella casella Elabora codice di uscita di un comando riuscito immettere un valore compreso tra 0 e 999999.
Nella casella Comando immettere i comandi che iniziano con PowerShell.exe con i parametri che specificano lo script di PowerShell da eseguire. Questi esempi sono simili alla sintassi per l'esecuzione di comandi di PowerShell da un prompt dei comandi di Windows. Fare riferimento a
PowerShell.exe -?
per tutte le opzioni di sintassi possibili.Esempio 1: esegue un cmdlet semplice.
PowerShell.exe -Command "Get-Date"
Esempio 2: esegue una query tramite SQLCmd.exe sul server corrente (nell'esempio viene usata la sostituzione del token di SQL Agent).
PowerShell.exe -Command "sqlcmd.exe -S $(ESCAPE_NONE(SRVR)) -Q 'SELECT @@VERSION'"
Esempio 3: esegue uno script di PowerShell (usando
pwsh.exe
, il nome eseguibile in PowerShell 7.0, che deve essere installato nel server). Il percorso dello script è locale al server in cui è in esecuzione SQL Agent.PWSH.exe -ExecutionPolicy RemoteSigned -File X:\MyScripts\script001.ps1
Selezionare la pagina Avanzate per impostare le opzioni del passaggio del processo, ad esempio: quale azione eseguire se il passaggio del processo ha esito positivo o negativo, quante volte SQL Server Agent deve tentare di eseguire il passaggio del processo e il file in cui SQL Server Agent può scrivere l'output del passaggio del processo. Solo i membri del ruolo predefinito del server sysadmin possono scrivere l'output della fase del processo in un file del sistema operativo.