Pregunta sobre triggers

13/02/2004 - 08:02 por fabian | Informe spam
Hola a todos,

mi pregunta es la siguiente, es posible hacer un trigger que al
cambiar(actualizar) el estado de un campo de la tabla, genere un fichero de
texto con los registros de la tabla que están en ese estado? Si sabeis cómo,
me podriais dar algún ejemplo?
soy principiante y no sé muy bien las posibilidades de los triggers.

Saludos.

Preguntas similare

Leer las respuestas

#1 Miguel Egea
13/02/2004 - 10:15 | Informe spam
Como poder si que se podría, pero no es buena idea, crear ficheros es una
tarea ajena a Sql-server, yo crearía una tabla (en portalsql.com tienes
ejemplos) con las claves de los registros modificados. Después a través de
comandos como bcp o mediante dts exportaría esa información a ficheros de
texto.

Saludos
miguel Egea
"fabian" escribió en el mensaje
news:euA7#
Hola a todos,

mi pregunta es la siguiente, es posible hacer un trigger que al
cambiar(actualizar) el estado de un campo de la tabla, genere un fichero


de
texto con los registros de la tabla que están en ese estado? Si sabeis


cómo,
me podriais dar algún ejemplo?
soy principiante y no sé muy bien las posibilidades de los triggers.

Saludos.



Respuesta Responder a este mensaje
#2 fabian
13/02/2004 - 14:41 | Informe spam
He heho lo siguiente :

CREATE TRIGGER [EXPORTARFICHEROS] ON [dbo].[TB_ENTRADAS]
AFTER UPDATE
AS

DECLARE @FileName varchar(50),
@bcpCommand varchar(2000),
@orderno varchar(8)

INSERT INTO TEMP_ENTRADAS
(NPEDIDO, TIPOENT, PROVEEDOR, FECHAPEDIDO, FECHAENT,
ESTADO)
SELECT NPEDIDO, TIPOENT, PROVEEDOR, FECHAPEDIDO, FECHAENT, ESTADO
FROM TB_ENTRADAS
WHERE ESTADO = 'C'

Set @orderno ='PRUEBA'

SET @FileName = REPLACE('c:\' + @orderno +
'_'+CONVERT(char(8),GETDATE(),1)+'.txt','/','-')

SET @bcpCommand = 'bcp "SELECT * FROM TEMP_ENTRADAS " queryout "'
SET @bcpCommand = @bcpCommand + @FileName + '" -T -c -o c:\test.txt'

EXEC master..xp_cmdshell @bcpCommand

DELETE FROM TEMP_ENTRADAS
GO

pero en el fichero test.txt me da el siguiente error:

SQLState = S0002, NativeError = 208
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]El nombre de objeto
'TEMP_ENTRADAS' no es v lido.
SQLState = 37000, NativeError = 8180
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]No se puede preparar
la instrucci¢n o instrucciones.


"Miguel Egea" escribió en el mensaje
news:
Como poder si que se podría, pero no es buena idea, crear ficheros es una
tarea ajena a Sql-server, yo crearía una tabla (en portalsql.com tienes
ejemplos) con las claves de los registros modificados. Después a través de
comandos como bcp o mediante dts exportaría esa información a ficheros de
texto.

Saludos
miguel Egea
"fabian" escribió en el mensaje
news:euA7#
> Hola a todos,
>
> mi pregunta es la siguiente, es posible hacer un trigger que al
> cambiar(actualizar) el estado de un campo de la tabla, genere un


fichero
de
> texto con los registros de la tabla que están en ese estado? Si sabeis
cómo,
> me podriais dar algún ejemplo?
> soy principiante y no sé muy bien las posibilidades de los triggers.
>
> Saludos.
>
>
>


Respuesta Responder a este mensaje
#3 ulises
13/02/2004 - 15:31 | Informe spam
El bcp es un comando externo, de esa manera le tienes que
especificar todos los datos que necesita para hacer la
tarea, le tienes que indicar el servidor, y el nombre de
la tabla en forma completa "basededatoss.owner.tabla";
revisa la sintaxis completa del bcp en el BOL.

Saludos,
Ulises

He heho lo siguiente :

CREATE TRIGGER [EXPORTARFICHEROS] ON [dbo].[TB_ENTRADAS]
AFTER UPDATE
AS

DECLARE @FileName varchar(50),
@bcpCommand varchar(2000),
@orderno varchar(8)

INSERT INTO TEMP_ENTRADAS
(NPEDIDO, TIPOENT, PROVEEDOR,


FECHAPEDIDO, FECHAENT,
ESTADO)
SELECT NPEDIDO, TIPOENT, PROVEEDOR, FECHAPEDIDO,


FECHAENT, ESTADO
FROM TB_ENTRADAS
WHERE ESTADO = 'C'

Set @orderno ='PRUEBA'

SET @FileName = REPLACE('c:\' + @orderno +
'_'+CONVERT(char(8),GETDATE(),1)+'.txt','/','-')

SET @bcpCommand = 'bcp "SELECT * FROM TEMP_ENTRADAS "


queryout "'
SET @bcpCommand = @bcpCommand + @FileName + '" -T -c -o


c:\test.txt'

EXEC master..xp_cmdshell @bcpCommand

DELETE FROM TEMP_ENTRADAS
GO

pero en el fichero test.txt me da el siguiente error:

SQLState = S0002, NativeError = 208
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]El


nombre de objeto
'TEMP_ENTRADAS' no es v lido.
SQLState = 37000, NativeError = 8180
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]No


se puede preparar
la instrucci¢n o instrucciones.


"Miguel Egea"


escribió en el mensaje
news:
Como poder si que se podría, pero no es buena idea,




crear ficheros es una
tarea ajena a Sql-server, yo crearía una tabla (en




portalsql.com tienes
ejemplos) con las claves de los registros modificados.




Después a través de
comandos como bcp o mediante dts exportaría esa




información a ficheros de
texto.

Saludos
miguel Egea
"fabian" escribió en el mensaje
news:euA7#
> Hola a todos,
>
> mi pregunta es la siguiente, es posible hacer un




trigger que al
> cambiar(actualizar) el estado de un campo de la




tabla, genere un
fichero
de
> texto con los registros de la tabla que están en ese




estado? Si sabeis
cómo,
> me podriais dar algún ejemplo?
> soy principiante y no sé muy bien las posibilidades




de los triggers.
>
> Saludos.
>
>
>






.

Respuesta Responder a este mensaje
#4 fabian
13/02/2004 - 15:49 | Informe spam
Ahora le doy la ruta completa, es decir, 'basedatos.owner.tabla' y no da
ningún error, lo que pasa es que me crea tanto el fichero donde guardo los
datos como el fichero de log vacíos y el sql server se queda como colgado.
Si ejecuto el mismo código desde el analizador de consultas, sin el trigger,
sí que funciona correcatmente.

Saludos.

"ulises" escribió en el mensaje
news:f30201c3f23e$100bf8a0$
El bcp es un comando externo, de esa manera le tienes que
especificar todos los datos que necesita para hacer la
tarea, le tienes que indicar el servidor, y el nombre de
la tabla en forma completa "basededatoss.owner.tabla";
revisa la sintaxis completa del bcp en el BOL.

Saludos,
Ulises

He heho lo siguiente :

CREATE TRIGGER [EXPORTARFICHEROS] ON [dbo].[TB_ENTRADAS]
AFTER UPDATE
AS

DECLARE @FileName varchar(50),
@bcpCommand varchar(2000),
@orderno varchar(8)

INSERT INTO TEMP_ENTRADAS
(NPEDIDO, TIPOENT, PROVEEDOR,


FECHAPEDIDO, FECHAENT,
ESTADO)
SELECT NPEDIDO, TIPOENT, PROVEEDOR, FECHAPEDIDO,


FECHAENT, ESTADO
FROM TB_ENTRADAS
WHERE ESTADO = 'C'

Set @orderno ='PRUEBA'

SET @FileName = REPLACE('c:\' + @orderno +
'_'+CONVERT(char(8),GETDATE(),1)+'.txt','/','-')

SET @bcpCommand = 'bcp "SELECT * FROM TEMP_ENTRADAS "


queryout "'
SET @bcpCommand = @bcpCommand + @FileName + '" -T -c -o


c:\test.txt'

EXEC master..xp_cmdshell @bcpCommand

DELETE FROM TEMP_ENTRADAS
GO

pero en el fichero test.txt me da el siguiente error:

SQLState = S0002, NativeError = 208
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]El


nombre de objeto
'TEMP_ENTRADAS' no es v lido.
SQLState = 37000, NativeError = 8180
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]No


se puede preparar
la instrucci¢n o instrucciones.


"Miguel Egea"


escribió en el mensaje
news:
Como poder si que se podría, pero no es buena idea,




crear ficheros es una
tarea ajena a Sql-server, yo crearía una tabla (en




portalsql.com tienes
ejemplos) con las claves de los registros modificados.




Después a través de
comandos como bcp o mediante dts exportaría esa




información a ficheros de
texto.

Saludos
miguel Egea
"fabian" escribió en el mensaje
news:euA7#
> Hola a todos,
>
> mi pregunta es la siguiente, es posible hacer un




trigger que al
> cambiar(actualizar) el estado de un campo de la




tabla, genere un
fichero
de
> texto con los registros de la tabla que están en ese




estado? Si sabeis
cómo,
> me podriais dar algún ejemplo?
> soy principiante y no sé muy bien las posibilidades




de los triggers.
>
> Saludos.
>
>
>






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida