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 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 Microsoft 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 Considerazioni relative alla protezione di SQL Server.
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\90\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 ActiveX come passaggi di processo
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. Per l'oggetto sono disponibili 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
Sub main()
' Create a Smo.Server object. The object connects to the
' server on which the script is running.
Set SmoServer = _
CreateObject ("Microsoft.SqlServer.Management.Smo.Server")
' Check the number of active connections for AdventureWorks.
ConnectionCount = _
SmoServer.GetActiveDbConnectionCount("AdventureWorks")
' If there are active connections, close the connections.
If ConnectionCount > 0 Then
' Log in the job history that this job step dropped
' connections to AdventureWorks.
Print ("Dropping connections to AdventureWorks." + crLf )
' Drop all active connections to AdventureWorks.
SmoServer.DropAllActiveDbConnections("AdventureWorks")
End If
End Sub
Nell'esempio seguente viene illustrata la stessa operazione in JScript:
// JScript example for ActiveX job step
function main() {
// Create a Smo.Server object. The object connects to the
// server on which the script is running.
var SmoServer =
CreateObject("Microsoft.SqlServer.Management.Smo.Server");
// Check the number of active connections for AdventureWorks.
var ConnectionCount =
SmoServer.GetActiveDbConnectionCount("AdventureWorks");
// If there are active connections, close the connections.
if (ConnectionCount > 0) {
// Log in the job history that this job step dropped
// connections to AdventureWorks.
Print ("Dropping connections to AdventureWorks.\n");
// Drop all active connections to AdventureWorks.
SmoServer.DropAllActiveDbConnections("AdventureWorks");
}
}
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. L'istruzione deve essere un metodo Execute XML for Analysis. L'istruzione non può contenere una busta SOAP o un metodo Discover XML for Analysis. Si noti che SQL Server Management Studio supporta buste SOAP complete e il metodo Discover, ma che tali elementi non sono supportati dai passaggi di processo SQL Server Agent.
Per ulteriori informazioni sullo standard XML for Analysis, vedere XML for Analysis Overview (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 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 tramite un processo di SQL Server Agent
Vedere anche
Concetti
Altre risorse
sysjobstepslogs (Transact-SQL)
sp_add_job (Transact-SQL)