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

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52