Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

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 :
Publié mercredi 27 février 2008 09:00 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 13 heures et 30 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 14 heures et 44 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18