2013-02-21 77 views
0

我有一個SQL Server數據庫,我想要從單個表中編寫腳本數據。當我嘗試這個時,我得到了CyclicalForeignKeyException - 大概是因爲某處有一個FK循環,這很好。這似乎是SQL Server的一個令人討厭的限制,在我的情況下,我正在使用SQL Server 2008 R2。僅限Sql Server腳本數據:針對CyclicalForeignKeyException的解決方法?

3個建議我讀過這個是:

  1. 擺脫週期。 (沒有選項,因爲我不想修改此數據庫。)
  2. 暫時刪除鍵並在之後重置它們。 (由於相同的原因,不是一個選項。)
  3. 腳本DB中的所有對象。 (這是可能的,但這種DB是大所以這是不是一個理想的解決方案。)

另一個類似的建議,我看是要備份的數據庫和恢復臨時複製,刪除FKS,然後獲取數據。但是,既然數據庫很大,這也不是很理想。

任何人有另一種想法?

+0

您也可以將操作更改爲「無操作」。 – Kermit 2013-02-21 22:55:28

+0

@AarolamaBluenk - 這是否會對數據庫進行更改(在我的情況下不可接受),還是僅用於運行腳本(可接受)? – TTT 2013-02-21 23:01:10

+0

這將對數據庫進行更改。你可以使用臨時表嗎? – Kermit 2013-02-21 23:02:21

回答

3

Wow-我不能相信這工作...

我有DB的一個類似的版本,我試圖讓數據的另一臺計算機。這次我運行它的工具。 (通過工具我的意思是:任務 - >生成腳本...在高級中選擇1個表,將「腳本中的數據類型」更改爲「僅數據」。)

起初我還以爲這個數據庫的其他版本不能有循環鍵,但後來我意識到我正在使用SQL Server Management Studio 2012 Express。於是我關閉了SSMS,與域用戶做了一個runas/netonly,並打開了SSMS 2012並連接到了SQL Server 2008 R2數據庫。我重試生成腳本,它的工作!

顯然SSMS 2012修復了這個「問題」,你甚至可以用它來對付其他數據庫版本!

相關問題