Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2011, 16h41   #1
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Par défaut trigger lançant un exe

Bonjour à tous,

Je souhaite créer un trigger qui après l'insertion d'une ligne dans une table, me lance un exécutable.

trigger:
Code :
1
2
3
4
5
6
7
8
9
CREATE TRIGGER [dbo].[trig_after_ins_atm]
  ON [dbo].[maTable]
AFTER INSERT
AS 
	DECLARE @cmd VARCHAR(500)
	SELECT @cmd = 'd:\MonAppli.exe'
 
	exec master..xp_cmdshell @cmd
GO
Cet exe a pour but de venir récupérer cette ligne et faire des mises à jour dans une autre base de donnée.

Le problème est que lorsque je fais un insert dans cette table, j'obtiens le message suivant:
Code :
Unhandled Exception: System.DATA.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior TO completion of the operation OR the server IS NOT responding.

Lorsque je lance la commande
Code :
exec master..xp_cmdshell
à la main, ca fonctionne bien.

Quelqu'un peut'il me dire pourquoi cela ne fonctionne pas? s'il y a un moyen de corriger cela?


PS: pour info, il m'est impossible d'utiliser les linked server. La base de donnée en face n'acceptant pas les transactions distribuées !!!

Base de donnée SQL SERVER 2008
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 19h17   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
1) lorsque vous êtes dans un trigger vous êtes à l'intérieur de la transaction INSERT UPDATE ou DELETE. En faisant un appel externe, vous augmentez la durée de la transaction et continuez de verrouiller là ou les tables.
2) effectivement c'est donc une transaction distribuée que vous tentez de lancer de fait
3) vous pouvez commiter préventivement

MAIS : c'est une absurdité que de lancer un exécutable dans un trigger. Ce que vous tnetez de aire devrait être fait de manière synchrone !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 09h24   #3
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Merci pour votre réponse.

Le problème est qu'il ne m'est pas possible d'utiliser les linked server. Sinon, tout passerai par la et çà serait bien plus efficace.

Avez vous une autre solution?
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 10h09   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Non, il n'y a pas d'autre solution.... sauf à implémenter autre chose qu'un trigger et en mode asynchrone.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 10h36   #5
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
Si vous insitez, merci d'activer la fonctionalité dans l'outils de configuration de la surface d'expositions.
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h27.


 
 
 
 
Partenaires

Hébergement Web