Création d'étapes de travail
Une étape du travail est une action exécutée par le travail sur une base de données ou un serveur. Chaque travail doit posséder au moins une étape de travail. Les étapes de travail peuvent être :
- des programmes exécutables et des commandes du système d'exploitation ;
- des instructions Transact-SQL, notamment des procédures stockées ou des procédures stockées étendues ;
- des scripts Microsoft ActiveX ;
- des tâches de réplication ;
- des tâches Analysis Services ;
- des packages Integration Services.
Chaque étape de travail s'exécute dans un contexte de sécurité spécifique. Si l'étape de travail spécifie un proxy, elle s'exécute dans le contexte des informations d'identification du proxy. Dans le cas inverse, l'étape de travail s'exécute dans le contexte du compte du service SQL Server Agent. Seuls les membres du rôle de serveur fixe sysadmin sont autorisés à créer des travaux qui ne spécifient pas explicitement de proxy.
Puisque les étapes de travail s'exécutent dans le contexte d'un utilisateur Microsoft Windows spécifique, cet utilisateur doit disposer des autorisations et de la configuration nécessaires à l'exécution de l'étape de travail. Par exemple, si vous créez un travail qui requiert une lettre de lecteur ou un chemin d'accès UNC (Universal Naming Convention), les étapes du travail peuvent être exécutées sous votre compte d'utilisateur Microsoft Windows pendant que les tâches sont testées. Toutefois, l'utilisateur Windows associé à l'étape de travail doit par ailleurs disposer des autorisations nécessaires, des configurations de lettres de lecteurs appropriées ou des droits d'accès au lecteur requis. Sinon, l'étape de travail échoue. Pour éviter ce problème, vérifiez que le proxy associé à chaque étape de travail dispose des autorisations nécessaires pour la tâche correspondant à l'étape de travail. Pour plus d'informations, consultez Considérations de sécurité pour SQL Server.
Journaux d'étapes de travail
L'Agent SQL Server peut écrire le résultat de certaines étapes de travail dans un fichier du système d'exploitation ou dans la table sysjobstepslogs de la base de données msdb. Les types d'étapes de travail suivants peuvent écrire les résultats sur les deux destinations :
- des programmes exécutables et des commandes du système d'exploitation ;
- des instructions Transact-SQL ;
- des tâches Analysis Services.
Seules les étapes de travail exécutées par des utilisateurs membres du rôle de serveur fixe sysadmin peuvent écrire le résultat des étapes de travail dans des fichiers du système d'exploitation. Si les étapes de travail sont exécutées par des utilisateurs membres du rôle de base de données fixe SQLAgentUserRole, SQLAgentReaderRole ou SQLAgentOperatorRole dans la base de données msdb, le résultat de ces étapes de travail peut être écrit uniquement dans la table sysjobstepslogs.
Les journaux d'étapes de travail sont automatiquement supprimés dès lors que les travaux ou les étapes de travail sont supprimés.
Remarque : |
---|
La journalisation des tâches de réplication et des étapes de travail des packages Integration Services est assurée par leur sous-système respectif. Vous ne pouvez pas utiliser l'Agent SQL Server pour configurer la journalisation des étapes de travail pour ces types d'étapes de travail. |
Programmes exécutables et commandes du système d'exploitation en tant qu'étapes de travail
Les programmes exécutables et les commandes du système d'exploitation peuvent être utilisés en tant qu'étapes de travail. Ces fichiers peuvent posséder les extension bat, .cmd, .com ou .exe.
Lorsque vous utilisez un programme exécutable ou une commande du système d'exploitation en tant qu'étape de travail, vous devez spécifier :
- le code de sortie du processus renvoyé en cas de succès de la commande ;
- la commande à exécuter. S'il s'agit d'exécuter une commande du système d'exploitation, vous spécifiez simplement la commande elle-même. Dans le cas d'un programme externe, il s'agit du nom du programme et des arguments à transmettre au programme, par exemple : C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe -e -q "sp_who"
Remarque : Vous devez indiquer le chemin d'accès complet au fichier exécutable si ce dernier ne réside pas dans un répertoire spécifié dans le chemin système ou le chemin d'accès de l'utilisateur sous le nom duquel l'étape de travail est exécutée.
Pour créer une étape de travail avec un programme exécutable
Pour réinitialiser les autorisations de l'Agent SQL Server
Étapes de travail Transact-SQL
Lorsque vous créez une étape de travail Transact-SQL, vous devez :
- identifier la base de données dans laquelle le travail va être exécuté ;
- taper l'instruction Transact-SQL à exécuter. L'instruction peut faire appel à une procédure stockée ou à une procédure stockée étendue.
Vous pouvez éventuellement ouvrir un fichier Transact-SQL existant en tant que commande pour l'étape de travail.
Les étapes de travail Transact-SQL n'utilisent pas les proxies de l'Agent SQL Server. Au lieu de cela, l'étape de travail s'exécute au nom de son propriétaire ou sous le compte du service SQL Server Agent, si le propriétaire de l'étape de travail est membre du rôle de serveur fixe sysadmin. Les membres du rôle de serveur fixe sysadmin peuvent également préciser que les étapes de travail Transact-SQL s'exécutent sous le contexte d'un autre utilisateur par le biais du paramètre database_user_name de la procédure stockée sp_add_jobstep. Pour plus d'informations, consultez sp_add_jobstep (Transact-SQL).
Remarque : |
---|
Une étape de travail Transact-SQL unique peut contenir plusieurs lots. Les étapes de travail Transact-SQL peuvent intégrer des commandes GO incorporées. |
Pour créer une étape de travail Transact-SQL
Pour définir les options d'une étape de travail Transact-SQL
Étapes de travail ActiveX Scripting
Lorsque vous créez une étape de travail ActiveX Scripting, vous devez :
- identifier le langage de script dans lequel l'étape de travail est écrite ;
- écrire le script ActiveX.
Vous pouvez également ouvrir un fichier de script ActiveX existant en tant que commande pour l'étape du travail. Les commandes de script ActiveX peuvent aussi être compilées en externe (par exemple, à l'aide de Microsoft Visual Basic), puis exécutées en tant que programmes exécutables.
Lorsqu'une commande d'étape de travail est un script ActiveX, vous pouvez utiliser l'objet SQLActiveScriptHost pour imprimer le résultat dans le journal d'historique des étapes de travail ou créer des objets COM. SQLActiveScriptHost est un objet global introduit par le système hôte d'Agent SQL Server dans l'espace de noms de script. L’objet propose deux méthodes (Print et CreateObject). L'exemple suivant illustre le fonctionnement du script ActiveX dans 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
L'exemple suivant présente la même tâche dans 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");
}
}
Pour créer une étape de travail de script ActiveX
Étapes de travail de réplication
Lorsque vous créez des publications et des abonnements par le biais de la réplication, des travaux de réplication sont créés par défaut. Le type de travail créé dépend du type de réplication (capture instantanée, transactionnelle ou fusion) et des options utilisées.
Les étapes de travail de réplication activent l'un des agents de réplication suivants :
- Agent de capture instantanée (travail Snapshot)
- Agent de lecture du journal (travail LogReader)
- Agent de distribution (travail de distribution)
- Agent de fusion (travail Merge)
- Agent de lecture de file d'attente (travail QueueReader)
Lorsque la réplication est configurée, vous pouvez spécifier l'un des trois modes d'exécution suivants pour les agents de réplication : en continu après le démarrage de l'Agent SQL Server, à la demande, ou selon un programme. Pour plus d'informations sur les agents de réplication, consultez Présentation des Agents de réplication.
Étapes de travail Analysis Services
L'Agent SQL Server prend en charge deux types distincts d'étapes de travail Analysis Services : les étapes de travail de commande et les étapes de travail de requête.
Étapes de travail de commande Analysis Services
Lorsque vous créez une étape de travail de commande Analysis Services, vous devez :
- identifier le serveur de bases de données OLAP sur lequel l'étape de travail doit s'exécuter ;
- taper l'instruction à exécuter. L'instruction doit correspondre à une méthode Execute XML pour Analysis Services. Elle ne doit pas comporter d'enveloppe SOAP complète ni de méthode Discover XML pour Analysis Services. Il est à noter que, contrairement à SQL Server Management Studio, les étapes de travail SQL Server Agent ne prennent pas en charge les enveloppes SOAP complètes ni la méthode Discover.
Pour plus d'informations sur XML pour Analysis Services, consultez XML for Analysis Overview (XMLA).
Étapes de travail de requête Analysis Services
Lorsque vous créez une étape de travail de requête Analysis Services, vous devez :
- identifier le serveur de bases de données OLAP sur lequel l'étape de travail doit s'exécuter ;
- taper l'instruction à exécuter. L'instruction doit être une requête MDX (Multidimensional Expressions).
Pour plus d'informations sur les expressions MDX, consultez Principes de base des requêtes MDX (MDX).
Packages Integration Services
Lorsque vous créez une étape de travail de package Analysis Services, vous devez :
- identifier la source du package ;
- identifier l'emplacement du package ;
- identifier les fichiers de configuration, dans la mesure où le package requiert des fichiers de configuration ;
- identifier les fichiers de commandes, dans la mesure où le package requiert des fichiers de commandes ;
- identifier la vérification à utiliser pour le package. Par exemple, vous pouvez préciser que le package doit être signé ou posséder un ID de package spécifique ;
- identifier les sources de données du package ;
- identifier les fournisseurs d'informations du package ;
- préciser les variables et les valeurs à définir préalablement à l'exécution du package ;
- identifier les options d'exécution ;
- ajouter ou modifier les options de ligne de commande.
Pour plus d'informations sur la création d'étapes de travail exécutant des packages Integration Services, consultez Procédure : exécuter un package à l'aide du travail de l'Agent SQL Server
Voir aussi
Concepts
Autres ressources
sysjobstepslogs (Transact-SQL)
sp_add_job (Transact-SQL)