Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   problema con xp_cmdshell (https://www.clubdelphi.com/foros/showthread.php?t=58329)

Gaim2205 16-07-2008 17:46:33

problema con xp_cmdshell
 
Hola amigos, tengo el siguiente trigger en mi BD sql server 2000
Código SQL [-]
ALTER      TRIGGER trgUddate
ON dbo.POORDLIN_SQL
FOR UPDATE

AS

If UPDATE(exp_unit_cost)
BEGIN

PRINT('AFTER Trigger [trgUddate] - Executed')

exec master.dbo.xp_cmdshell '"C:\Archivos de programa\Vineyardsoft\KnowledgeSync 2000\Bin\KS_Event.exe" 
@admin;password/schedule=prueba'

END
GO

Pero al ejecutarse obtengo el error:
'C:\Archivos' is not recognized as an internal or external command,
operable program or batch file.

Esa es la ruta correcta a la aplicación, segun veo al encontrar el primer espacio en blanco corta la cadena. Deberia hacer esto? Como lo soluciono? Porque tampoco me acepta la ruta usando la tilde asi "C:\Archiv~1\...... etc, etc KS_Event.exe"

Gracias por su ayuda. Saludos.

poliburro 16-07-2008 18:10:39

http://msdn.microsoft.com/es-es/library/ms175046.aspx

Gaim2205 16-07-2008 18:32:58

Pues si, creo que eso es justo lo que estoy haciendo:

'"C:\Archivos de programa\Vineyardsoft\KnowledgeSync 2000\Bin\KS_Event.exe"
@admin;password/schedule=prueba'

Las comillas sencillas al inicio y al final, con comillas dobles delimitando la ruta.

Es por eso que acudo a ustedes, ya el material que he encontrado en mis busquedas por internet no me ha servido. Gracias.

Actualización: Encontré la pagina http://support.microsoft.com/kb/266224 Y procedí a realizar el archivo por lotes al que llamé simplemente test.bat y lo puse en C:\

pero aun asi al ejecutar exec master.dbo.xp_cmdshell "c:\test.bat" sale el mismo error. Tratando con comillas dobles, simples, todo...

Si alguien se ha encontrado con lo mismo o tiene alguna idea, poor favor contestar. Gracias.

Flecha 22-03-2011 17:53:27

Hola.
Hace ya casi 3 años desde que se abrió este hilo, y es más que probable que quien lo abrió ya haya encontrado la solucón. Pero tengo una respuesta.

XP_CMDSHELL no reconoce nombres largos. Es decir, que te va a dar igual encerrar o no la ruta y el nombre del ejecutable entre comillas dobles ("). Tienes que escribir el nombre y su ruta haciendo uso de los nombres cortos (los 8.3 de MS-DOS de toda la vida).

Aunque la llamada al ejecutable la metas dentro de un .BAT, el error persiste porque sigue ejecutándose dentro del "perfil" o "entorno" del SQL-Server.

Un problema parecido me estoy encontrando yo con otra cosa, y me estoy volviendo loco para intentar escapar del problema. Lo mío no se soluciona con los nombres 8.3 de MS-DOS. :(

Un saludo.


La franja horaria es GMT +2. Ahora son las 18:04:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi