Longueur de la commande d'arguments de xp_cmdShell

Résolu
Toub63 Messages postés 12 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 27 mai 2008 - 2 déc. 2005 à 12:10
hyshane Messages postés 1 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 29 juin 2009 - 29 juin 2009 à 13:06
Bonjour,

J'ai créé un déclencheur sur une table dans SQL Server 2000.
Ce dernier se déclenche lors de la modification d'une ligne.
Voici le code correspondant :

CREATE TRIGGER MONTRIGGER ON dbo;MATABLE
FOR UPDATE
AS
DECLARE @cmd sysname, @TypeTable sysname, @TypeAjout as sysname
DECLARE @Licence varchar(12)
DECLARE @NumPv varchar(2)
DECLARE @NomAgence varchar(35)
DECLARE @Adr1 varchar(35)
DECLARE @Adr2 varchar(35)
DECLARE @CP varchar(10)
DECLARE @Ville varchar(35)
DECLARE @NumTel varchar(15)
DECLARE @NumFax varchar(15)


SELECT @Licence = Licence,
@NumPv = NumPV,
@NomAgence = NomAgence,
@Adr1 = AdresseLigne1,
@Adr2 = AdresseLigne2,
@CP = CodePostal,
@Ville = Ville,
@NumTel = NumTelephone,
@NumFax = NumFax FROM inserted
SET @TypeTable = 'PDV'
SET @TypeAjout = 'UPDATE'
SET @cmd = 'C:\EXE_SAGE\Selectour.exe ' + @TypeTable + ' ' + @TypeAjout + ' ' + @Licence + ' ' + @NumPv + ' "' + @NomAgence + '"' + ' "' + @Adr1 + '"' + ' "' + @Adr2 + '"' + ' ' + @CP + ' "' + @Ville + '"' + ' "' + @NumTel + '"' + ' "' + @NumFax + '"'
EXEC master..xp_cmdshell @cmd

Lors de l'execution de mon exe, je m'apercois que la ligne d'arguments est tronquée ! Est la longueur est limitée pour le passage d'arguments à xp_cmdshell, y'a-t-il un moyen de faire autrement.

Merci

4 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
2 déc. 2005 à 18:01
salut

pourquoi as tu defini le type sysname pour ta variable @cmd ?

avec un type varchar tu n'aura peut etre plus le probleme...
3
Toub63 Messages postés 12 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 27 mai 2008
9 déc. 2005 à 11:30
Merci aieeeuuuuuu

c'est bien cela, j'ai passé ma variable en varchar et ca marche

Merci encore
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
9 déc. 2005 à 15:22
de rien ;)
0
hyshane Messages postés 1 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 29 juin 2009
29 juin 2009 à 13:06
Bonjour,

Je pense avoir le problème :
J'ai créer un trigger qui va exécuter un script .bat à l'insertion d'une ligne.

---------------
SET
ANSI_NULLS
ON
SET

QUOTED_IDENTIFIER
ONGO

CREATE

 
TRIGGER [inv]
.[TRIGGER_INTERFACE_COMPTA_2]
ON

[inv]
.[inv_invoice]AFTER

INSERTAS

BEGIN

SET

NOCOUNT
ON;

BEGIN

TRANSACTIONSET

TRANSACTION
ISOLATION
LEVEL SERIALIZABLE
DECLARE

@INVNBR
AS
INT;COMMIT
TRANSACTION

SELECT @INVNBR
= invoiceNumber
FROM [inv]
.[inv_invoice];

DECLARE @cmd
AS
sysname

SET @cmd
=
'CMD /C C:\STORK\IPAKI\REPORTING\IPAKI\INVOICE_ACCOUNTING\TALEND\TEST_TRIGGER_TANZANIE\TEST_TRIGGER_TANZANIE\TEST_TRIGGER_TANZANIE_run.bat '+'"'+cast(@INVNBR
AS
CHAR
(10
))
+
'"'

EXEC

master
..xp_cmdshell @cmd

END

------
En retour j'ai le message suivant : " C:\STORK\IPAKI\REPORTING\IPAKI\INVOICE_ACCOUNTING\TALEND\TEST_TRIGGER_TANZANIE\TEST_TRIGGER_TANZANIE\TEST_TRIGGER_TANZANI is not recognized as internal or external command
."

Aurais-je atteint la limite ?

Juste avec le chemin C:\STORK\ ça marche. (Le script doit deposer un fichier .xls sur la partition c:\)

Judi.
0
Rejoignez-nous