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 PowerShell ;

  • des scripts MicrosoftActiveX ;

  • 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.

Les étapes de travail étant exécutées 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 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 Sécurité et protection (moteur de base de données).

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.

Notes

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\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"

    Notes

    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 Agent SQL Server, si le propriétaire de l'étape de travail est membre du rôle de serveur 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).

Notes

Une étape de travail Transact-SQL unique peut contenir plusieurs traitements. 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 de scripts PowerShell

Lorsque vous créez une étape de travail de script PowerShell, vous devez spécifier l'un des deux éléments suivants comme commande pour l'étape :

  • Le texte d'un script PowerShell.

  • Un fichier de script PowerShell existant à ouvrir.

Le sous-système SQL Server Agent PowerShell ouvre une session PowerShell et charge les composants logiciels enfichables SQL Server PowerShell. Le script PowerShell utilisé comme commande d'étape de travail peut faire référence aux cmdlets et au fournisseur SQL Server PowerShell. Pour plus d'informations sur l'écriture de scripts PowerShell à l'aide des composants logiciels enfichables SQL Server PowerShell, consultez Vue d'ensemble de SQL Server PowerShell.

Étapes de travail ActiveX Scripting

Important

L'étape de travail de scripts ActiveX ne sera pas supprimé de l'Agent SQL Server dans une version future de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

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 a 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
' 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

L'exemple suivant présente la même tâche dans 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(); 

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 être une méthode Execute XML pour Analysis Services. L'instruction peut ne pas contenir une enveloppe SOAP complète ou une méthode Discover XML Analysis Services. Notez que, bien que SQL Server Management Studio prenne en charge les enveloppes SOAP (Simple Object Access Protocol) complètes et la méthode Discover, ce n'est pas le cas pour les étapes de travail de l'Agent SQL Server.

Pour plus d'informations sur XML pour Analysis Services, consultez Vue d'ensemble de XMLA (XML for Analysis).

É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 Integration Services, vous devez effectuer les étapes suivantes :

  • 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