Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

ejecucion de xp_cmdshell en un trigger

Estas en el tema de ejecucion de xp_cmdshell en un trigger en el foro de SQL Server en Foros del Web. Hola a todos, les cuento mi problema a ver si alguien me puede ayudar: tengo una Bd en la cual tengo una tabla(para el ejemplo ...
  #1 (permalink)  
Antiguo 12/07/2011, 09:11
 
Fecha de Ingreso: abril-2007
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
ejecucion de xp_cmdshell en un trigger

Hola a todos, les cuento mi problema a ver si alguien me puede ayudar:

tengo una Bd en la cual tengo una tabla(para el ejemplo la llamare tabla_a).

hay un programa que me inserta registros en esta tabla con cierta periodicidad y cada que hay una insercion yo tengo que realizar una accion.


para ello implemente un trigger el cual cada que hay un insert me llama un archivo .bat a traves de una instruccion xp_cmdshell.

hasta ahy todo bien. el problema es que esa instruccion que corro a traves de mi .bat necesariamente tiene que hacer un select a la misma tabla_a.

No se exactamente que es lo que sucede pero Sqlserver se bloquea completamente y tengo que cerrar a la fuerza el servicio.

presumo que el problema es que estoy intentanto hacer un select a una tabla que en ese mismo momento se esta haciendo un insert.

he intentado hace la operacion inclusive con usuarios distintos pero no he tenido suerte....

alguien me puede dar una manito H E L P...

gracias
  #2 (permalink)  
Antiguo 12/07/2011, 10:02
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: ejecucion de xp_cmdshell en un trigger

NUNCA LO VAS A PODER HACER, ESO ES IMPOSIBLE !!!!, hay que entender que SQL Server es 100% transaccional, y lo que estas generando es un DEAD-LOCK (Interbloqueo).

¿Que deseas hacer exactamente?, ¿Porque volver a hacer un SELECT sobre una tabla que en ese PRECISO MOMENTO se esta actualizando?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 12/07/2011, 10:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: ejecucion de xp_cmdshell en un trigger

ya intentaste con un select * from tabla with(nolock)??? Con eso sacaras los datos de tu tabla pero si necesitas informacion que se esta insertanto pues eso si no creo que se pueda...

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 12/07/2011, 10:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: ejecucion de xp_cmdshell en un trigger

Libras, ¿tendras una bola magica cerca de ti?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 12/07/2011, 10:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: ejecucion de xp_cmdshell en un trigger

Cita:
Iniciado por iislas Ver Mensaje
Libras, ¿tendras una bola magica cerca de ti?
Jajaja bola magica no, nada mas tengo una pelota que da toques electricos :P jajaja
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 12/07/2011, 14:25
 
Fecha de Ingreso: abril-2007
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ejecucion de xp_cmdshell en un trigger

iislas tienes razon, estoy haciendo un interbloqueo. Creo que tendre que pensar en otra solucion.

Lo que sucede es que la tabla en cuestion es actualizada constantemente (insert) por un programa. Tan pronto se presenta la insercion, mi trigger ejecuta un archito .bat el cual hace un select a esta misma tabla con el objetivo de generar un archivo plano con la informacion que contiene la tabla.

evidentemente se esta presentando un bloqueo.

una solucion podria ser que tan pronto se presente la insercion, el trigger me exporte de una vez el registro ( RECIEN INSERTADO) a un archivo plano....

ustedes podrian indicarme que instruccion en sqlserver me podria servir para hacer esto???

gracias por su ayuda y perdonen la inexperiencia



GRACIAS, OSCARTGA
  #7 (permalink)  
Antiguo 12/07/2011, 14:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: ejecucion de xp_cmdshell en un trigger

En tu transaccion, que inserta el registro en tu tabla, tambien inserta el registro en tu archivo plano.
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 12/07/2011, 15:45
 
Fecha de Ingreso: abril-2007
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ejecucion de xp_cmdshell en un trigger

si, necesitaria que al tiempo que inserte en la tabla, inserte en un archivo plano.


me puedes dar una ayuda de como puedo hacer esto???


GRACIAS
  #9 (permalink)  
Antiguo 12/07/2011, 18:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: ejecucion de xp_cmdshell en un trigger

¿Como lo pensabas hacer con XP_CMDSHELL?, con BCP.EXE, ¿cierto?
__________________
MCTS Isaias Islas

Etiquetas: .bat, trigger, xp_cmdshell
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:35.