2 votes

SQL Strange Timeout Issue

Ok, donc j'essaie de créer une procédure qui appelle une procédure étendue. J'obtiens l'erreur suivante :

Msg 121, Level 20, State 0, Line 0
A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

Même avec le test le plus simple, j'obtiens cette erreur :

CREATE PROCEDURE Test
AS
BEGIN

EXEC xp_cmdshell 'dir *.exe'

END

Cependant, si j'exécute simplement xp_cmdshell 'dir *.exe' par lui-même, il fonctionne.

Le système fonctionne sur un serveur SQL 2005 en grappe. Toute aide est la bienvenue.

1voto

ErikE Points 18233

L'erreur se produit-elle lorsque vous créez la procédure ou lorsque vous l'exécutez ?

Si vous l'obtenez lorsque vous l'exécutez, alors il pourrait y avoir un problème de permissions. Puisque dans les versions ultérieures de sql server, appeler xp_cmdshell est étroitement verrouillé et par défaut non activé dans la configuration de la surface, je pourrais voir un potentiel pour cela.

Comment appelez-vous le PS ? Si vous utilisez le SQL dynamique, sachez qu'il s'exécute avec les privilèges de l'appelant, et non du créateur du SP.

Faut-il préfixer le SP par master comme dans master.dbo.xp_cmdshell ?

Avez-vous essayé EXECUTE AS soit dans la création de la PS, soit dans l'exécution de la PS ?

De plus, d'après mon expérience, les erreurs au niveau du transport ne sont parfois pas dues à un problème avec le serveur mais à un problème avec le client qui met en cache son objet de connexion après le moment où le serveur l'a abandonné (invalidant ainsi l'objet de connexion). Étant donné que vous exécutez probablement ceci peu de temps après la connexion initiale, il ne semble pas que ce soit le problème exact, mais pourrait-il s'agir d'un problème de proxy/pare-feu/filtre réseau qui abandonne les paquets en raison de la détection de certains mots-clés dans les paquets ? Je sais que c'est un peu long mais je devais demander...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X