Borrar todos los trigger

18/02/2005 - 16:34 por Javier Perez | Informe spam
Hola, tengo un grave problema
Alguien sabe como borrar todos los trigger de las tablas?


Gracias


Javier Perez

Preguntas similare

Leer las respuestas

#1 Maxi
18/02/2005 - 17:06 | Informe spam
Hola se me ocurre que hagas un cursor (sii yo tambien uso cursores pero para
estas cosas ;-)

Donde primer de la tabla sysobjects levantes los nombres de los Trigger y
luego con Sqldinamico los borres
(sp_executesql)




Salu2
Maxi


"Javier Perez" <""highsoft\"@"> escribió en el mensaje
news:
Hola, tengo un grave problema
Alguien sabe como borrar todos los trigger de las tablas?


Gracias


Javier Perez
Respuesta Responder a este mensaje
#2 qwalgrande
18/02/2005 - 17:08 | Informe spam
Hola.

Se borran de uno en uno... Para listar todos los triggers de una base de
datos puedes usar la consulta:

select * from sysobjects where type = 'TR'

Pero ten cuidado con ello. Antes de borrar nada, guárdate un backup. Por
otra parte, además de borrarlos también tienes la opción de deshabilitarlos,
así puedes testear lo que necesitas con un método algo menos agresivo. Para
una tabla dada, sería:

alter table MiTabla disable trigger all

También puedes deshabilitar sólo uno. Para volver a habilitarlos, en lugar
de disable, enable.

qwalgrande


"Javier Perez" <""highsoft\"@"> wrote in message
news:
Hola, tengo un grave problema
Alguien sabe como borrar todos los trigger de las tablas?


Gracias


Javier Perez
Respuesta Responder a este mensaje
#3 Alejandro Mesa
18/02/2005 - 17:09 | Informe spam
Javier,

Puedes usar el siguiente script, pero quisiera saber por que quieres hacer
esto?. Pudieras desabilitar todos los triggers en todas las tablas para
revisar cualquier error, y una vez solucionado podrias abilitarlos de nuevo.

Ejemplo (desabilitar - abilitar):

declare @tn sysname
declare @sql nvarchar(4000)

declare tr_cursor cursor
local
fast_forward
for
select distinct
object_name(o.parent_obj)
from
sysobjects o
where
objectproperty(o.[id], 'IsTrigger') = 1
AND objectproperty(o.[id], 'IsMSShipped') = 0

open tr_cursor

while 1 = 1
begin
fetch next from tr_cursor into @tn

if @@error <> 0 or @@fetch_status <> 0 break

set @sql = N'alter table ' + quotename(@tn) + N' disable trigger all'
raiserror('%s', 10, 1, @sql) with nowait
execute sp_executesql @sql
end

close tr_cursor
deallocate tr_cursor
go

declare @tn sysname
declare @sql nvarchar(4000)

declare tr_cursor cursor
local
fast_forward
for
select distinct
object_name(o.parent_obj)
from
sysobjects o
where
objectproperty(o.[id], 'IsTrigger') = 1
AND objectproperty(o.[id], 'IsMSShipped') = 0

open tr_cursor

while 1 = 1
begin
fetch next from tr_cursor into @tn

if @@error <> 0 or @@fetch_status <> 0 break

set @sql = N'alter table ' + quotename(@tn) + N' enable trigger all'
raiserror('%s', 10, 1, @sql) with nowait
execute sp_executesql @sql
end

close tr_cursor
deallocate tr_cursor
go

Ejemplo (eliminar):

declare @trn sysname
declare @sql nvarchar(4000)

declare tr_cursor cursor
local
fast_forward
for
select
o.[name]
from
sysobjects o
where
objectproperty(o.[id], 'IsTrigger') = 1
AND objectproperty(o.[id], 'IsMSShipped') = 0

open tr_cursor

while 1 = 1
begin
fetch next from tr_cursor into @trn

if @@error <> 0 or @@fetch_status <> 0 break

set @sql = N'drop trigger ' + @trn
raiserror('%s', 10, 1, @sql) with nowait
execute sp_executesql @sql
end

close tr_cursor
deallocate tr_cursor
go


AMB


"Javier Perez" <""highsoft"@" wrote:

Hola, tengo un grave problema
Alguien sabe como borrar todos los trigger de las tablas?


Gracias


Javier Perez

Respuesta Responder a este mensaje
#4 J Lara
18/02/2005 - 17:37 | Informe spam
mmm.. que este no es el ultimo de los casos.. bueno, asi me dijero.
yo solo una vez me vi en la necesidad de inhabilitar uno pero no batalle mucho
con wsql lo dropie, claro deje abierta la pantalla para luego volverlo a
guardar
igual...


"Javier Perez" <""highsoft"@" escribió:

Hola, tengo un grave problema
Alguien sabe como borrar todos los trigger de las tablas?


Gracias


Javier Perez

Respuesta Responder a este mensaje
#5 Anonimo
18/02/2005 - 17:56 | Informe spam
Muchachos:
Les trato de comentar como es un poco la historia, tenemos dos
servidores SQL SERVER 2000 SP3 replicados entre si y a uno se le rompio
el disco duro, el tema es que restauramos el backup que teniamos y no se
pudieron recuperar las replicas, jobs, etc. entonces debemos crear las
replicas de nuevo. Pero una vez que restauramos la BBDD se presentaron
problemas del tipo "invalid object name sysmergearticles", entonces
averigue que el problema eran los trigger que genera automaticamente
cada transaccion para luego realizar las replicas. Yo borre estos
trigger y el error desaparecio, pero entre una por una a las tablas, por
supuesto antes que ustedes me propusiran algunas de las soluciones.

En resumen, alguno de ustedes conoce alguna herramienta que permita
restaurar backup si perder la replicas ? Eso seria muy util.

O, alguien se le ocurre si este proceso de restaurar y rehacer replicas,
jobs, etc, se puede hacer de otra forma con resultados buenos.


Gracias a todos.

Un abrazo.


Javier Perez


Alejandro Mesa wrote:
Javier,

Puedes usar el siguiente script, pero quisiera saber por que quieres hacer
esto?. Pudieras desabilitar todos los triggers en todas las tablas para
revisar cualquier error, y una vez solucionado podrias abilitarlos de nuevo.

Ejemplo (desabilitar - abilitar):

declare @tn sysname
declare @sql nvarchar(4000)

declare tr_cursor cursor
local
fast_forward
for
select distinct
object_name(o.parent_obj)
from
sysobjects o
where
objectproperty(o.[id], 'IsTrigger') = 1
AND objectproperty(o.[id], 'IsMSShipped') = 0

open tr_cursor

while 1 = 1
begin
fetch next from tr_cursor into @tn

if @@error <> 0 or @@fetch_status <> 0 break

set @sql = N'alter table ' + quotename(@tn) + N' disable trigger all'
raiserror('%s', 10, 1, @sql) with nowait
execute sp_executesql @sql
end

close tr_cursor
deallocate tr_cursor
go

declare @tn sysname
declare @sql nvarchar(4000)

declare tr_cursor cursor
local
fast_forward
for
select distinct
object_name(o.parent_obj)
from
sysobjects o
where
objectproperty(o.[id], 'IsTrigger') = 1
AND objectproperty(o.[id], 'IsMSShipped') = 0

open tr_cursor

while 1 = 1
begin
fetch next from tr_cursor into @tn

if @@error <> 0 or @@fetch_status <> 0 break

set @sql = N'alter table ' + quotename(@tn) + N' enable trigger all'
raiserror('%s', 10, 1, @sql) with nowait
execute sp_executesql @sql
end

close tr_cursor
deallocate tr_cursor
go

Ejemplo (eliminar):

declare @trn sysname
declare @sql nvarchar(4000)

declare tr_cursor cursor
local
fast_forward
for
select
o.[name]
from
sysobjects o
where
objectproperty(o.[id], 'IsTrigger') = 1
AND objectproperty(o.[id], 'IsMSShipped') = 0

open tr_cursor

while 1 = 1
begin
fetch next from tr_cursor into @trn

if @@error <> 0 or @@fetch_status <> 0 break

set @sql = N'drop trigger ' + @trn
raiserror('%s', 10, 1, @sql) with nowait
execute sp_executesql @sql
end

close tr_cursor
deallocate tr_cursor
go


AMB


"Javier Perez" <""highsoft"@" wrote:


Hola, tengo un grave problema
Alguien sabe como borrar todos los trigger de las tablas?


Gracias


Javier Perez

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida