Lancer un programme VB via un trigger et la commande xp_cmdshell
cs_maloue
Messages postés13Date d'inscriptionvendredi 22 avril 2005StatutMembreDernière intervention21 décembre 2010
-
1 févr. 2010 à 15:16
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
2 févr. 2010 à 00:03
Bonjour,
Est il possible de lancer un programme écris en VB via la commande xp_cmdShell placée dans un trigger.
J(arrive à lancer le programme mais la fenêtre de saisie du programme VB n'est pas visible à l'utilisateur ?
Le programme est en attente de saisie sur le form du programme VB le programme est bien actif car présent dans le gestionnaire de tache.
Exemple avec la calculette de windows.
xec master.dbo.xp_cmdshell 'C:\calc.exe'
Si quelqu'un peut m?expliquer ci cela est faisable ou non ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 2 févr. 2010 à 00:03
Bonjour,
En partant du principe que dans le cas présent l'utilisateur est connecté à une session sur la même machine que celle qui héberge l'instance de SQL Server, il est très peu probable que ce dernier puisse lancer une interface graphique accessible depuis la session de l'utilisateur (et encore moins sous Vista/Server 2008 et sup.).
Et si c'était possible mais que plusieurs sessions sont ouvertes : laquelle choisir ?
Et en cas d'appel depuis un client distant ? (ce qui est quand même la vocation première d'un service comme SQL Server).
Je ne connais pas les détails d'implémentation de xp_cmdshell, et donc pas dans quel contexte cette procédure étendue lance les commandes qu'on lui passe, mais de ce que je sais les processus sont lancés de manière synchrone : le traitement en cours bloqué tant que le processus lancé n'est pas terminé (bien que dans le cas de SQL Server il se peut que le traitement finisse par être aborté, mais pas sûr).
Et que se passera t'il en cas de très grand nombre d'actions déclenchant le trigger ?
De manière générale je considère que lancer un traitement nécessitant une intervention humaine depuis un service comme SQL Server est une très mauvaise idée.