Desactivar Constraints (Urgente)

13/07/2007 - 14:37 por Tonic | Informe spam
Hola!

Debo hacer un volcado de datos y hay un número bastante alto de tablas
como para tener en cuenta las restriciones por FK. Hay alguna manera
de desactivar los Constraints para una vez terminada la copia masiva
de datos volver a activar?

Muchas gracias!
Tonic

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
13/07/2007 - 16:28 | Informe spam
Tonic,

Como piensas hacer la copia masiva?

Si usas la sentencia "BULK INSERT", o el comando BCP, o DTS Package -
Transform Data Task, sin la opcion CHECK_CONSTRAINTS, entonces las
restricciones CHECK y FOREIGN KEY no se tomaran en cuenta. Esto puede mejorar
el rendimiento de la carga, pero tambien tiene su lado oscuro y este es que
esas restricciones seran marcadas como "Not Trusted" (ver funcion
OBJECTPROPERTY - CnstIsNotTrusted en los BOL), en español seria "No
Confiable", y creanlo o no, eso puede influir en el plan de ejecucion que
escoje el optimixador de queries.

La forma de evitar el problema seria usar la sentencia "alter table",
despues de la carga masiva, y activar esas restricciones usando la opcion
"WITH CHECK " para que SQL Server valida la restriccion la marque como
confiable.

Can you trust your constraints?
http://sqlblog.com/blogs/hugo_korne...aints.aspx


AMB

"Tonic" wrote:

Hola!

Debo hacer un volcado de datos y hay un número bastante alto de tablas
como para tener en cuenta las restriciones por FK. Hay alguna manera
de desactivar los Constraints para una vez terminada la copia masiva
de datos volver a activar?

Muchas gracias!
Tonic


Respuesta Responder a este mensaje
#2 Tonic
13/07/2007 - 22:00 | Informe spam
On 13 jul, 16:28, Alejandro Mesa
wrote:
Tonic,

Como piensas hacer la copia masiva?

Si usas la sentencia "BULK INSERT", o el comando BCP, o DTS Package -
Transform Data Task, sin la opcion CHECK_CONSTRAINTS, entonces las
restricciones CHECK y FOREIGN KEY no se tomaran en cuenta. Esto puede mejorar
el rendimiento de la carga, pero tambien tiene su lado oscuro y este es que
esas restricciones seran marcadas como "Not Trusted" (ver funcion
OBJECTPROPERTY - CnstIsNotTrusted en los BOL), en español seria "No
Confiable", y creanlo o no, eso puede influir en el plan de ejecucion que
escoje el optimixador de queries.

La forma de evitar el problema seria usar la sentencia "alter table",
despues de la carga masiva, y activar esas restricciones usando la opcion
"WITH CHECK " para que SQL Server valida la restriccion la marque como
confiable.

Can you trust your constraints?http://sqlblog.com/blogs/hugo_korne...you-tru...

AMB

"Tonic" wrote:
> Hola!

> Debo hacer un volcado de datos y hay un número bastante alto de tablas
> como para tener en cuenta las restriciones por FK. Hay alguna manera
> de desactivar los Constraints para una vez terminada la copia masiva
> de datos volver a activar?

> Muchas gracias!
> Tonic



Hola!

Pues conseguí el código para crear una store procedure que activa/
desactiva los check constraints de las tablas. Con un cursor recorre
las tablas haciendo un alter table quitanto o poniendo los
constraints. Le he dicho a mi compañero que ejecute el sp desactivando
los checks constraints, luego ejecutando la importación de datos de
Sql Server, y a continuación, si todo ha ido correctamente, activar
las restricciones con el store procedure. Lo malo es que hasta el
lunes no sabré cómo ha ido todo :-)

Saludos y muchas gracias!
Tonic
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida