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...