Comment faire pour exécuter une procédure stockée chaque jour dans SQL Server Express Edition?
Comment est-il possible d'exécuter une procédure stockée à un moment donné chaque jour dans SQL Server Express Edition?
Notes:
- Il est nécessaire de tronquer une table d'audit
- Une autre solution serait de modifier la requête d'insertion, mais c'est probablement moins efficace
- SQL Server Express Edition n'ont pas l'Agent SQL Server
Questions Connexes:
- Comment puis-je programmer une sauvegarde quotidienne avec SQl Server Express?
- Exécution planifiée de procédure stockée dans SQL Server
- Ce post semble intéressant (référencée dans une réponse à une des questions connexes): sqlteam.com/article/scheduling-jobs-in-sql-server-express
Vous devez vous connecter pour publier un commentaire.
Depuis SQL Server express ne vient pas avec l'Agent SQL, vous pouvez utiliser le planificateur de tâche de Windows pour exécuter un SQLCMD avec une procédure stockée ou un script SQL.
http://msdn.microsoft.com/en-us/library/ms162773.aspx
J'ai trouvé le mécanisme suivant a fonctionné pour moi.
Quelques remarques:
Si vous utilisez Express Edition, vous aurez besoin d'utiliser le Planificateur de Windows ou de l'application de la connexion au serveur d'une certaine façon.
Vous utilisez le planificateur de tâches pour exécuter l'utilitaire sqlcmd. Voici quelques instructions pour obtenir le sqlcmd de travail avec express edition.
Créer une tâche planifiée qui appelle "C:\YourDirNameHere\TaskScript.vbs" au démarrage. VBScript doivent effectuer répété l'exécution de la tâche (dans cet exemple, il est à 15 minutes en boucle)
Via la ligne de commande (doit exécuter cmd.exe en tant qu'administrateur):
Exemple TaskScript.vbs: Cela exécute personnalisé de votre script SQL silencieusement à l'aide d'RunSQLScript.chauve-souris
RunSQLScript.chauve-souris: il utilise sqlcmd pour appeler à l'instance de base de données et exécuter le script SQL
SQL Planificateur de de http://www.lazycoding.com/products.aspx
Depuis une autre question semblable a été posée, et sera probablement fermée comme un doublon de celui-ci, et il existe de nombreuses options qui ne sont pas mentionnés dans les réponses déjà présent ici...
Puisque vous êtes à l'aide de SQL Express vous ne pouvez pas utiliser l'Agent SQL Server. Cependant, il existe plusieurs alternatives, dont vous pouvez programmer à l'aide de AU ou Planificateur De Tâches De Windows selon votre système d'exploitation:
Tous ces langages/outils (et beaucoup d'autres) ont la capacité de se connecter à SQL Server et exécutez une procédure stockée. Vous pouvez aussi essayer ces Agent de la hanche:
La façon la plus simple que j'ai trouvé pour résoudre ce problème est de créer une requête qui exécute la procédure stockée puis l'enregistrer. La requête devrait ressembler à celle ci-dessous.
Puis créer un fichier de commandes avec quelque chose de similaire pour le code ci-dessous dans il.
Alors le planificateur de tâches exécuter le lot aussi souvent que vous le souhaitez
Une autre approche de la planification dans SQL Express est d'utiliser Service Broker Conversation Minuteries. Pour exécuter une procédure stockée périodiquement, que vous pouvez utiliser pour l'amorçage personnalisé planificateur.
Voir, par exemple Les Travaux de planification dans SQL Server Express
Vous pouvez utiliser le Planificateur de Tâches pour le feu d'une simple application de console que l'exécution de l'instruction Sql.
Comme vous l'avez souligné, sans le processus de l'agent, vous aurez besoin de quelque chose d'autre externe sur le serveur, peut-être un service que vous écrivez et installer ou le planificateur de tâches Windows.
Notez qu'avec une installation rapide pour une application locale, il est possible que la machine ne peut pas être sur à l'heure que vous voulez de tronquer la table (disons que vous avez réglé à tronquer tous les soirs à minuit, mais l'utilisateur n'a jamais sa machine sur).
De sorte que votre tâche planifiée est de ne jamais exécuter et votre journal d'audit devient hors de contrôle (c'est un problème avec l'Agent SQL Server en tant que bien, mais on pourrait supposer qu'un serveur réel serait de course non-stop). Une meilleure stratégie si cette situation correspond à la vôtre peut-être d'avoir la demande de le faire sur demande lorsqu'il détecte qu'il a été de plus de X jours depuis la troncature ou quel que soit votre opération.
Une autre chose à regarder, c'est si vous parlez d'une Application Web, il serait peut-être temps lorsque l'application est chargée, et l'opération peut être effectuée lorsque cet événement se déclenche.
Comme mentionné dans le commentaire, il est sp_procoption - ce qui pourrait permettre à votre SP pour exécuter à chaque fois que le moteur est lancé - les inconvénients de cette méthode sont que pour les long-instances en cours d'exécution, il pourrait être un long temps entre les appels et encore a des problèmes si le moteur ne tourne pas à la fois vous besoin de l'opération à faire.
Notre société a également utiliser SQLEXPRESS et il n'y a pas de SQL Agent.
Puisqu'il n'est pas marqué réponse d'un "droit" et toutes les solutions sont assez complexe, je vais partager ce que j'ai fait là. Peut-être, son vraiment mauvais, mais il a très bien fonctionné pour moi.
J'ai choisi les opérations d'Insertion (de gens le font) à une table qui a obtenu près le même intervalle de temps dont j'avais besoin et faites un déclencheur "INSERT" qui s'applique fonction désirée.