2009-07-29 9 views
2

J'ai une configuration de travail dans SQL Server 2005 qui a une étape du système d'exploitation (CmdExec).Comment définir le travail SQL Server 2005 CmdExec Timeout

L'étape appelle un programme qui peut prendre beaucoup de temps à s'exécuter. Je vois que si le programme prend plus de 1 minute 40 secondes pour répondre, l'étape échoue avec un message d'erreur "L'opération a expiré". Le programme continue à fonctionner et génère les résultats souhaités.

Comment puis-je définir le délai d'attente pour l'étape de ce travail. Sinon, s'il existe un moyen de définir le délai d'attente pour l'ensemble du travail qui serait tout aussi utile car c'est la seule étape du travail. Si tout le reste échoue, je serais prêt à changer le délai d'attente pour l'ensemble du serveur, bien que ce serait évidemment un dernier recours.

J'ai essayé d'examiner les propriétés de l'étape, du travail et de l'agent SQL Server, mais je n'ai trouvé aucun emplacement pour définir cette option.

Répondre

2

Les travaux SQL n'ont pas de délai d'attente - vous ne pouvez pas les configurer pour qu'ils s'arrêtent d'eux-mêmes s'ils fonctionnent trop longtemps ou s'ils atteignent un point particulier dans le temps. (Woulda m'a sauvé beaucoup de temps de développement si vous pouviez!) Vous pouvez configurer des étapes pour vérifier les temps ou les durées, et pouvez coder les actions prises dans les étapes pour vérifier les temps, mais au travail ou au niveau de l'étape, non.

Ce qui rend cette question intéressante. Pourquoi obtenez-vous un délai d'expiration? Sur la base de ce que vous avez dit, je suppose que SQL Agent est incapable de dire que le système d'exploitation a reçu la commande "do this" que vous envoyez via l'étape cmdexec. Après l'envoi et l'attente, il pense que le travail n'a jamais démarré et rapporte en conséquence (et il y a le délai d'expiration de votre système caché). Comment cela se passe-t-il? Vous pouvez investir dans des configurations de sécurité ou des droits d'accès aux fichiers, mais je commencerais par examiner la routine que vous lancez, quelque chose qui me sent le poisson.

+0

Merci pour la réponse. Le programme appelé n'est qu'un proxy pour appeler les services Web. Je l'ai en cours d'exécution pour d'autres emplois et cela fonctionne très bien, mais ces services web ne prennent pas autant de temps à courir. – YonahW

1

Les Webservices sont votre réponse. Comme Phillip l'a souligné, il n'y a pas de délai pour les étapes dans les travaux SQL Server.

Une question que vous pourriez avoir besoin de demander est la raison pour laquelle le service Web arrive à expiration. Dans mon expérience, le problème pourrait être que vous exécutez une requête trop volumineuse, soit renvoyant un résultat trop long, soit entraînant une perte de temps pour le service web.

Sinon, vous devez contacter le fournisseur de services Web pour prolonger le délai d'attente.

+0

Le webservice fonctionne en effet longtemps, mais quand j'y accède directement, il ne prend pas beaucoup de temps. – YonahW