2010-08-27 55 views
9

我有幾個大數據集(〜O(1TB)),我想將其導入到我的數據庫中。我使用BULK INSERT將數據導入臨時表,然後使用SELECTINSERT INTO填充我的真實表與數據。這是因爲我想改變某些事物的順序,並將一些數據文件分成邏輯表。如果這個功能不需要,我只需將BULK INSERT直接放入我的目標表中。BULK INSERT後檢查FK約束

我想檢查是否所有外鍵約束都已執行。如果我在導入階段將BULK INSERT標記爲CHECK_CONSTRAINTS,則導入過程會放慢抓取速度。

是否有命令在事後做到這一點?我有非常有限熟悉SQL Server和一般的數據庫。

在此先感謝。

編輯:

推薦閱讀:MSDN Article

回答

5

要檢查一個表:

alter table YourTable with check check constraint all 

要檢查所有的表:

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

嗯,我試着用檢查檢查約束全部'改變表MyTable',並得到了......「命令(s)成功完成。否則它會失敗? – Gleno 2010-08-27 21:21:30

+0

是的。如果發生違規,你會得到一個像「ALTER TABLE語句與COLUMN FOREIGN KEY約束衝突......」的錯誤。 – 2010-08-27 21:22:58

+0

好的,那麼非常感謝你的幫助。 – Gleno 2010-08-27 21:23:33

1

蒂博爾Karaszi寫了信任約束的大文章:Non-trusted constraints

+1

發現在該職位的 「DBCC CHECKCONSTRAINTS()」 的提示,去嘗試一下。 :) – Gleno 2010-08-27 21:18:17

2

多少表/外鍵,你在看什麼?你有沒有考慮編寫一個檢查孤行的快速自定義查詢?

+0

這正是我現在正在做的。大約有10個表格,其中一些相互交叉引用。我認爲可以有一種方法來節省一些時間。 :) – Gleno 2010-08-27 21:15:48

+0

我喜歡這個答案+1,你需要知道FK的無效位置 – MikeAinOz 2010-08-28 00:58:41