2010-08-27 628 views
9

Tengo un par de grandes conjuntos de datos (~ O (1TB)), que deseo importar a mi base de datos. Yo uso BULK INSERT para importar datos en tablas temporales, luego uso SELECT y INSERT INTO para llenar mis tablas reales con los datos. Esto se debe a que quiero cambiar el orden de algunas cosas y dividir algunos archivos de datos en tablas lógicas. Y si esta funcionalidad no es necesaria, solo BULK INSERT directamente en mi tabla de destino.Verificar restricciones de FK después de BULK INSERT

Me gustaría comprobar si se han aplicado todas las restricciones de clave externa. Si marcó BULK INSERT a CHECK_CONSTRAINTS durante la etapa de importación, el proceso de importación se ralentiza.

¿Hay un comando para hacer esto después del hecho? Tengo muy limitado familiaridad con SQL Server, y base de datos en general.

Gracias de antemano.

EDIT:

Lectura recomendada: MSDN Article

Respuesta

5

Para comprobar una tabla:

alter table YourTable with check check constraint all 

Para comprobar todas las tablas:

exec sp_msforeachtable 'alter table ? with check check constraint all' 
+0

Hm, probé 'alter table MyTable with check check constraint all' y obtuve un ... "Comando completado con éxito." ¿Habría fallado de otra manera? – Gleno

+0

Sí. Obtendría un error como "ALTER TABLE statement conflicted with COLUMN FOREIGN KEY constraint ..." si hubo una violación. –

+0

Bien, muchas gracias por su ayuda. – Gleno

1

Tibor Karaszi escribió un gran artículo sobre las limitaciones de confianza: Non-trusted constraints

+1

encontraron un indicio "DBCC CHECKCONSTRAINTS()" en ese puesto, va a probarlo. :) – Gleno

2

¿Cuántas mesas/claves externas son usted que mira? ¿Ha pensado en escribir una consulta personalizada rápida que compruebe si hay filas huérfanas?

+0

Eso es exactamente lo que estoy haciendo en este momento. Hay aproximadamente 10 tablas, algunas de las cuales se referencian entre sí. Pensé que podría haber una manera de ahorrar algo de tiempo. :) – Gleno

+0

Me gusta esta respuesta +1, necesita saber dónde el FK no es válido – MikeAinOz

Cuestiones relacionadas