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

#6 Alejandro Mesa
18/02/2005 - 18:17 | Informe spam
Javier,

Creo que aun falta informacion que deberiamos saber para dar una mejor
respuesta.

Que tipo de replicacion estas usando?
Que lado de la replica fue la que se rompio?
Estan replicando todas las tablas?
Por que no crearon los triggers con la clausula NOT FOR REPLICATION?
Estan haciendo backup de la base MSDB? (esto es super importante)
Que posibilidades tienen de implementar mirroring atraves de raid 1 o raid 5?

Contesta estas preguntas y te ayudaran a tener una idea de que camino tomar
para seleccionar un plan de recuperacion en caso de desastre.


AMB


"@" <""highsoft"@arro" wrote:

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
#7 Anonimo
18/02/2005 - 18:42 | Informe spam
Lamentablemente algunos puntos importantes que mencionas no se tuvieron
en cuenta.

Que tipo de replicacion estas usando?
Estoy usando el tipo MERGE

Que lado de la replica fue la que se rompio?
La del lado del publicador / distribuidor

Estan replicando todas las tablas?
No solamente alguna


Por que no crearon los triggers con la clausula NOT FOR REPLICATION?
No conocia esa opcion al momento de la creacion.

Que posibilidades tienen de implementar mirroring atraves de raid 1 o
raid 5?
Lo estamos evaluando ya que no deseamos pasar por esto nuevamente.


Gracias a todos por su orientacion y ayuda.


Saludos



Javier




Alejandro Mesa wrote:
Javier,

Creo que aun falta informacion que deberiamos saber para dar una mejor
respuesta.

Que tipo de replicacion estas usando?
Que lado de la replica fue la que se rompio?
Estan replicando todas las tablas?
Por que no crearon los triggers con la clausula NOT FOR REPLICATION?
Estan haciendo backup de la base MSDB? (esto es super importante)
Que posibilidades tienen de implementar mirroring atraves de raid 1 o raid 5?

Contesta estas preguntas y te ayudaran a tener una idea de que camino tomar
para seleccionar un plan de recuperacion en caso de desastre.


AMB


"@" <""highsoft"@arro" wrote:


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






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