2010-08-27 13 views
9

Ho un paio di grandi set di dati (~ O (1TB)), che voglio importare nel mio database. Io uso BULK INSERT per importare i dati in tabelle temporanee, quindi utilizzare SELECT e INSERT INTO per riempire le mie tabelle reali con i dati. Questo perché voglio cambiare l'ordine di alcune cose e dividere alcuni file di dati in tabelle logiche. E se questa funzionalità non è necessaria, ho solo BULK INSERT direttamente nella mia tabella di destinazione.Controllare i vincoli FK dopo BULK INSERT

Vorrei verificare se tutti i vincoli di chiave esterna sono stati applicati. Se contrassegno BULK INSERT a CHECK_CONSTRAINTS durante la fase di importazione, il processo di importazione rallenta fino alla ricerca per indicizzazione.

Esiste un comando per farlo dopo il fatto? Ho molto limitato familiarità con SQL Server e database in generale.

Grazie in anticipo.

EDIT:

Lettura consigliata: MSDN Article

risposta

5

Per controllare una tabella:

alter table YourTable with check check constraint all 

Per controllare tutte le tabelle:

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

Hm, ho provato 'alter table MyTable con check check vincint all' e ottenuto un ... "Comando (i) completato correttamente." avrebbe fallito altrimenti? – Gleno

+0

Sì. Riceverai un errore come "ALTER TABLE statement in conflitto con COLUMN FOREIGN KEY constraint ..." se c'è stata una violazione. –

+0

Ok, allora grazie mille per il tuo aiuto. – Gleno

1

Tibor Karaszi ha scritto un ottimo articolo su vincoli di fiducia: Non-trusted constraints

+1

trovato un "DBCC CHECKCONSTRAINTS()" suggerimento in questo post, andando a provarlo. :) – Gleno

2

quanti tavoli/chiavi esterne stai guardando? Hai in mente di scrivere una rapida query personalizzata che controlla le righe orfane?

+0

Questo è esattamente quello che sto facendo in questo momento. Ci sono circa 10 tavoli, alcuni dei quali si fanno riferimenti incrociati. Pensavo che potesse esserci un modo per risparmiare un po 'di tempo. :) – Gleno

+0

Mi piace questa risposta +1, è necessario sapere dove l'FK non è valido – MikeAinOz

Problemi correlati