2010-10-18 3 views
0

J'utilise SQL Server 2005 ...File d'attente SQL, exécuter SP à une date ultérieure

Je veux surveiller table1 avec un déclencheur pour une mise à jour. Sur l'occurrence de cette mise à jour, je vais vérifier une autre table (table2), en utilisant les données de la table2. Je place un élément dans la file d'attente pour l'exécuter à une date variable dans le futur. Pourrait être dans 10 secondes à partir de maintenant, ou 2 heures, cette date est déterminée à partir des données de la table2. Il est possible que le déclencheur de table1 s'exécute à nouveau avant que l'élément qui a été placé dans la file d'attente soit traité. Dans ce cas, l'élément dans la file d'attente doit être supprimé et un nouvel élément sera placé dans la file d'attente.

processus:

table1 est mis à jour déclenchement de table1 les incendies et les requêtes table2 pour déterminer un horodatage. Cet horodatage et ce code sont ajoutés à la file d'attente. Quelque chose surveille cette file d'attente et exécute le code à l'horodatage déterminé. Si la table1 est mise à jour avant que l'élément soit extrait de la file d'attente, cet élément est supprimé et un nouvel élément est ajouté à la file d'attente.

Existe-t-il un service de messagerie qui surveille la date et s'exécute à cette date ou devrais-je créer un nouveau travail SQL chaque fois que ce déclencheur est déclenché? Ou y a-t-il d'autres options? Cela doit être évolutif.

J'espère avoir été en mesure d'expliquer mon problème, si vous avez des questions faites le moi savoir. Merci pour toute aide que vous pouvez offrir.

Répondre

0

Avez-vous regardé SQL Server Service Broker?

Service Broker Tutorials

MISE À JOUR: Vous pouvez définir la priorité des messages, mais je ne pense pas que vous pouvez extraire nativement à une date précise. Sauf que, par définition, si vous placez deux messages dans une file d'attente, le plus ancien "sort" d'abord de la file d'attente, c'est-à-dire qu'ils sont supprimés dans l'ordre croissant des dates.

+0

J'ai un peu, mais je ne pouvais pas comprendre si elle peut ramasser l'article basé sur une date par opposition à simplement ramasser le prochain article disponible. –

0

Les tâches d'agent SQL-Server sont normalement utilisées pour exécuter des tâches à une date/heure spécifique. Je pense qu'il est possible d'avoir un travail créé ou modifié avec sp, de sorte que vous pouvez les utiliser dans le déclencheur. En revanche, il peut y avoir des problèmes d'autorisation. L'utilisateur qui déclenche le déclencheur doit avoir l'autorisation de créer/modifier le travail.

Questions connexes