Creazione di passaggi di processo

Un passaggio di processo è un'operazione eseguita dal processo in un database o in un server. Ogni processo deve essere composto da almeno un passaggio. I passaggi di processo possono essere costituiti dagli elementi seguenti:

  • Programmi eseguibili e comandi del sistema operativo.

  • Istruzioni Transact-SQL, incluse stored procedure e stored procedure estese.

  • Script di PowerShell.

  • Script Microsoft ActiveX.

  • Attività di replica.

  • Attività Analysis Services.

  • Pacchetti Integration Services.

Ogni passaggio di processo viene eseguito in un contesto di protezione specifico. Se tramite il passaggio di processo viene specificato un proxy, il passaggio viene eseguito nel contesto di protezione della credenziale per il proxy. Se tramite il passaggio di processo non viene specificato un proxy, il passaggio viene eseguito nel contesto dell'account del servizio SQL Server Agent. Solo i membri del ruolo predefinito del server sysadmin possono creare processi in cui non venga specificato esplicitamente un proxy.

Poiché i passaggi di processo vengono eseguiti nel contesto di un utente specifico di Microsoft Windows, l'utente deve disporre delle autorizzazioni e della configurazione necessarie per l'esecuzione del passaggio di processo. Se, ad esempio, si crea un processo che richiede una lettera di unità o un percorso UNC (Universal Naming Convention), i passaggi di processo possono essere eseguiti con l'account utente di Windows durante la verifica delle operazioni. L'utente di Windows per il passaggio di processo, tuttavia, deve inoltre disporre delle autorizzazioni richieste, delle configurazioni della lettera di unità o dell'accesso all'unità necessaria. In caso contrario, il passaggio di processo non verrà eseguito correttamente. Per evitare questo problema, assicurarsi che il proxy per ogni passaggio di processo disponga delle autorizzazioni necessarie per l'operazione eseguita dal passaggio. Per ulteriori informazioni, vedere Sicurezza e protezione (Motore di database).

Log dei passaggi di processo

SQL Server Agent può scrivere output da alcuni passaggi di processo in un file del sistema operativo o nella tabella sysjobstepslogs del database msdb. I tipi di passaggi di processo seguenti consentono la scrittura dell'output in entrambe le destinazioni:

  • Programmi eseguibili e comandi del sistema operativo.

  • Istruzioni Transact-SQL.

  • Attività Analysis Services.

Solo i passaggi di processo eseguiti dagli utenti membri del ruolo predefinito del server sysadmin possono scrivere l'output dei passaggi di processo nei file del sistema operativo. Se i passaggi di processo vengono eseguiti da utenti membri dei ruoli del database predefiniti SQLAgentUserRole, SQLAgentReaderRole o SQLAgentOperatorRole nel database msdb, l'output di questi passaggi di processo può essere scritto solo nella tabella sysjobstepslogs.

I log dei passaggi di processo vengono eliminati automaticamente quando vengono eliminati i processi o i passaggi di processo.

[!NOTA]

La registrazione delle attività di replica e dei passaggi di processo dei pacchetti Integration Services viene gestita dal rispettivo sottosistema. Non è possibile utilizzare SQL Server Agent per configurare la registrazione di questi tipi di passaggi di processo.

Utilizzo di programmi eseguibili e comandi del sistema operativo come passaggi di processo

I programmi eseguibili e i comandi del sistema operativo possono essere utilizzati come passaggi di processo. Questi file possono avere estensione bat, cmd, com o exe.

Quando si utilizza un programma eseguibile o un comando del sistema operativo come passaggio di processo, è necessario specificare gli elementi seguenti:

  • Il codice di uscita del processo, restituito se il comando ha esito positivo.

  • Il comando da eseguire. Per eseguire un comando del sistema operativo, è necessario immettere solo il comando specifico. Per un programma esterno, è necessario immettere il nome del programma e gli argomenti del programma, ad esempio: C:\Programmi\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"

    [!NOTA]

    È necessario indicare il percorso completo del programma eseguibile se questo non è incluso in una directory specificata nel percorso di sistema o nel percorso per l'account utente con cui viene eseguito il passaggio di processo.

Per creare un passaggio di processo con un programma eseguibile

Per reimpostare le autorizzazioni di SQL Server Agent

Passaggi di processo Transact-SQL

Quando si crea un passaggio di processo Transact-SQL, è necessario eseguire le operazioni seguenti:

  • Identificare il database in cui eseguire il processo.

  • Digitare l'istruzione Transact-SQL da eseguire. L'istruzione può chiamare una stored procedure o una stored procedure estesa.

In alternativa, è possibile aprire un file Transact-SQL esistente come comando per il passaggio di processo.

I passaggi di processo Transact-SQL non utilizzano proxy di SQL Server Agent. Il passaggio di processo viene invece eseguito come proprietario del passaggio oppure come account del servizio SQL Server Agent se il proprietario è un membro del ruolo predefinito del server sysadmin. I membri del ruolo predefinito del server sysadmin possono inoltre specificare che i passaggi di processo Transact-SQL vengano eseguiti nel contesto di un altro utente tramite il parametro database_user_name della stored procedure sp_add_jobstep. Per ulteriori informazioni, vedere sp_add_jobstep (Transact-SQL).

[!NOTA]

Un singolo passaggio di processo Transact-SQL può contenere più batch. I passaggi di processo Transact-SQL possono contenere comandi GO incorporati.

Per creare un passaggio di processo Transact-SQL

Per definire opzioni del passaggio di processo Transact-SQL

Utilizzo di script di PowerShell come passaggi di processo

Quando si utilizza uno script di PowerShell per creare un passaggio di processo, come comando del passaggio è necessario specificare uno dei due elementi seguenti:

  • Il testo di uno script di PowerShell.

  • Un file script di PowerShell esistente da aprire.

Il sottosistema PowerShell di SQL Server apre una sessione di PowerShell e carica gli snap-in SQL Server PowerShell. Lo script di PowerShell utilizzato come comando del passaggio di processo può fare riferimento al provider e ai cmdlet di PowerShell per SQL Server. Per ulteriori informazioni sulla scrittura di script di PowerShell utilizzando gli snap-in SQL Server PowerShell, vedere Panoramica di SQL Server PowerShell.

Utilizzo di Script ActiveX come passaggi di processo

Nota importanteImportante

Il passaggio di processo con script ActiveX verrà rimosso da SQL Server in una versione futura di MicrosoftSQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Quando si crea un passaggio di processo con script ActiveX, è necessario eseguire le operazioni seguenti:

  • Identificare il linguaggio di script con cui scrivere il passaggio di processo.

  • Scrivere lo script ActiveX.

È inoltre possibile aprire un file di script ActiveX esistente come comando per il passaggio di processo. In alternativa, i comandi degli script ActiveX possono essere compilati esternamente, ad esempio tramite Microsoft Visual Basic, e quindi eseguiti come file eseguibili.

Quando un comando di un passaggio di processo è uno script ActiveX, è possibile utilizzare l'oggetto SQLActiveScriptHost per stampare l'output nella cronologia dei passaggi di processo o per creare oggetti COM. SQLActiveScriptHost è un oggetto globale introdotto dal sistema di hosting di SQL Server Agent nello spazio dei nomi dello script. All'oggetto sono associati due metodi, ovvero Print e CreateObject. Nell'esempio seguente viene illustrato il funzionamento degli script ActiveX in Visual Basic Scripting Edition (VBScript).

' VBScript example for ActiveX Scripting job step
' Create a Dmo.Server object. The object connects to the
' server on which the script is running.

Set oServer = CreateObject("SQLDmo.SqlServer")
oServer.LoginSecure = True
oServer.Connect "(local)"
'Disconnect and destroy the server object
oServer.DisConnect
Set oServer = nothing

Nell'esempio seguente viene illustrata la stessa operazione in JScript:

// JScript example for ActiveX Scripting job step
// Create a Dmo.Server object. The object connects to the
// server on which the script is running.

var oServer = CreateObject("SQLDmo.SqlServer");
oServer.LoginSecure = true;
oServer.Connect("(local)");

//Disconnect and destroy the server object
oServer.DisConnect();
oServer.Close(); 

Per creare un passaggio di processo con ActiveX

Passaggi dei processi di replica

Quando si creano pubblicazioni e sottoscrizioni tramite la replica, i processi di replica vengono creati per impostazione predefinita. Il tipo di processo creato è determinato dal tipo di replica (snapshot, transazionale o di tipo merge) e dalle opzioni utilizzate.

I passaggi dei processi di replica attivano uno degli agenti di replica seguenti:

  • Agente snapshot (processo Snapshot)

  • Agente lettura log (processo LogReader)

  • Agente di distribuzione (processo Distribuzione)

  • Agente di merge (processo Merge)

  • Agente lettura coda (processo QueueReader)

Durante la configurazione della replica, è possibile specificare di eseguire gli agenti di replica in tre modi diversi: in modo continuativo dopo l'avvio di SQL Server Agent, su richiesta o in base a una pianificazione. Per ulteriori informazioni sugli agenti di replica, vedere Panoramica degli agenti di replica.

Passaggi di processo Analysis Services

SQL Server Agent supporta due tipi diversi di passaggi di processo Analysis Services, ovvero i passaggi di processo con comandi e i passaggi di processo con query.

Passaggi di processo con comandi di Analysis Services

Quando si crea un passaggio di processo con un comando di Analysis Services, è necessario eseguire le operazioni seguenti:

  • Identificare il server OLAP di database in cui eseguire il passaggio di processo.

  • Digitare l'istruzione da eseguire. È necessario che l'istruzione sia un file XML per il metodo Execute di Analysis Services . L'istruzione non può includere un elemento Envelope SOAP completo o un file XML per il metodo Discover di Analysis Services. A differenza di SQL Server Management Studio, i passaggi di processo di SQL Server Agent non supportano le buste SOAP complete e il metodo Discover.

Per ulteriori informazioni sui file XML per Analysis Services, vedere Panoramica di XML for Analysis (XMLA).

Passaggi di processo con query Analysis Services

Quando si crea un passaggio di processo con una query di Analysis Services, è necessario eseguire le operazioni seguenti:

  • Identificare il server OLAP di database in cui eseguire il passaggio di processo.

  • Digitare l'istruzione da eseguire. L'istruzione deve essere una query MDX.

Per ulteriori informazioni su MDX, vedere Nozioni fondamentali sulle query MDX (MDX).

Pacchetti Integration Services

Quando si crea un passaggio di processo con un pacchetto di Integration Services, è necessario eseguire le operazioni seguenti:

  • Identificare l'origine del pacchetto.

  • Identificare la posizione del pacchetto.

  • Se per il pacchetto sono necessari file di configurazione, identificare i file di configurazione.

  • Se per il pacchetto sono necessari file di comando, identificare i file di comando.

  • Identificare la verifica da utilizzare per il pacchetto. È possibile, ad esempio, specificare che il pacchetto deve essere firmato o deve disporre di un ID pacchetto specifico.

  • Identificare le origini dei dati per il pacchetto.

  • Identificare i provider di log per il pacchetto.

  • Specificare le variabili e i valori da impostare prima di eseguire il pacchetto.

  • Identificare le opzioni di esecuzione.

  • Aggiungere o modificare le opzioni della riga di comando.

Per ulteriori informazioni sulla creazione di passaggi di processo eseguiti come pacchetti Integration Services, vedere Procedura: Esecuzione di un pacchetto