SQL Server : Exécution automatique de code au démarrage du moteur
Il y a 2 manières d’exécuter du code de manière automatique dans SQL Server. L’une se fera dans le moteur relationnel au niveau du service SQL Server, l’autre par l’intermédiaire de l’agent SQL (planificateur de tâches du moteur).
Du côté relationnel, il est envisageable de définir les propriétés des procédures stockées par l’intermédiaire de :
sp_procoption [ @ProcName = ] 'procedure'
, [ @OptionName = ] 'option'
, [ @OptionValue = ] 'value'
Il y a un certain nombre de conditions pour que l’exécution automatique d’une procédure stockée au démarrage du serveur soit autorisée :
- Elle doit être dans la base système « master »
- Son propriétaire doit être dbo (Ce qui est le cas si vous être sysadmin et que vous la créez)
- Elle ne doit pas avoir de paramètres
Si toutes ces conditions sont réunies, le code suivant permettra de changer la propriété de démarrage automatique de la procédure stockée :
use master
exec sp_procoption 'MaProc', 'startup', 'on'
Pour connaître la liste des procédures qui sont dans la même situation, vous pourrez consulter la vue système :
select object_id, name, is_auto_executed from sys.procedures
Toutes les procédures stockées ayant le champ « is_auto_executed » passé à 1 sont exécutées automatiquement au démarrage du serveur.
En cas de problèmes (ex une procédure stockées étendu interdisant le démarrage du serveur, etc.) il vous est possible de désactiver l’exécution de ces procédure :
- Par l’option “scan for startup procs” du serveur
exec sp_configure 'show advanced options', 1
reconfigure
exec sp_configure 'scan for startup procs', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure
- Via le TraceFlag 4022
- A ajouter dans les paramètres de démarrage du service
Cela vous permettra de désactiver l’exécution automatique de la procédure problématique.
Côté Agent SQL, il est possible de planifier une tâche qui s’exécutera au démarrage de l’Agent… Généralement l’agent démarre juste après le moteur de base de données relationnel, mais s’il est paramétré pour un démarrage manuel cela peut être bien plus tard. Il n’est pas non plus impossible qu’il s’arrête (arrêt voulu ou non) et redémarre plusieurs fois pendant l’activité du moteur relationnel, gardez cela en tête.
Il suffira d’aller dans Management Studio :
- Connectez-vous à une instance du moteur relationnel
- Allez sous « SQL Server Agent » et sous « Jobs »
- Dans les propriétés d’une des tâches allez dans l’onglet de planification
- On indique que l’on souhaite que la tâche s’exécute au démarrage de l’agent :

Bon démarrage…
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :