Se puede desactivar toda la integridad referencial de una BBDD SQL Server 2005 y luego volver a activarla??

10/08/2007 - 12:17 por Ana | Informe spam
Buenas a todos,
Me gustaria saber si existe alguna manera de desactivar todos las claves
extranjeras de una BBDD

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
10/08/2007 - 16:22 | Informe spam
Hola Ana,

Cual version de sql server usas?

Chequea la sentencia "alter table" en tus libros en linea, la cual puedes
usar para deshabilitar las restricciones. Es importante que al habilitarlas
nuevamente, se haga de manera que se pueda confiar en ellas. Logico esta, que
esto lo debes hacer para cada tabla.

use tempdb
go

create table dbo.t1 (
c1 int not null identity primary key
)
go

create table dbo.t2 (
c1 int not null,
constraint fk_t2_t1 foreign key (c1) references dbo.t1(c1)
)
go

insert into dbo.t1 default values
go

insert into dbo.t2 values(2)
go

alter table dbo.t2
nocheck constraint fk_t2_t1
go

insert into dbo.t2 values(2)
go

delete dbo.t2
where c1 = 2
go

insert into dbo.t2 values(1)
go

alter table dbo.t2
with check check constraint fk_t2_t1
go

insert into dbo.t2 values(2)
go

drop table dbo.t2, dbo.t1
go

Por que insisto en que se habilite de forma confiable?

Porque el optimizador de queries usa estas restricciones a la hora de
escojer el plan de ejecucion, pero si estas restricciones no son confiables,
entonces el plan puede diferir del plan cuando estas lo son.


AMB

"Ana" wrote:

Buenas a todos,
Me gustaria saber si existe alguna manera de desactivar todos las claves
extranjeras de una BBDD



Respuesta Responder a este mensaje
#2 Ana
13/08/2007 - 09:48 | Informe spam
Gracias Alejandro, me he creado un procedimiento que me desactiva de golpe
todas las claves extranjeras y ya he conseguido solucionar mis problemas.
un saludo y gracias,

"Alejandro Mesa" wrote in message
news:
Hola Ana,

Cual version de sql server usas?

Chequea la sentencia "alter table" en tus libros en linea, la cual puedes
usar para deshabilitar las restricciones. Es importante que al
habilitarlas
nuevamente, se haga de manera que se pueda confiar en ellas. Logico esta,
que
esto lo debes hacer para cada tabla.

use tempdb
go

create table dbo.t1 (
c1 int not null identity primary key
)
go

create table dbo.t2 (
c1 int not null,
constraint fk_t2_t1 foreign key (c1) references dbo.t1(c1)
)
go

insert into dbo.t1 default values
go

insert into dbo.t2 values(2)
go

alter table dbo.t2
nocheck constraint fk_t2_t1
go

insert into dbo.t2 values(2)
go

delete dbo.t2
where c1 = 2
go

insert into dbo.t2 values(1)
go

alter table dbo.t2
with check check constraint fk_t2_t1
go

insert into dbo.t2 values(2)
go

drop table dbo.t2, dbo.t1
go

Por que insisto en que se habilite de forma confiable?

Porque el optimizador de queries usa estas restricciones a la hora de
escojer el plan de ejecucion, pero si estas restricciones no son
confiables,
entonces el plan puede diferir del plan cuando estas lo son.


AMB

"Ana" wrote:

Buenas a todos,
Me gustaria saber si existe alguna manera de desactivar todos las claves
extranjeras de una BBDD



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