0

単一のテーブルからデータをスクリプト化したい SQL Server DB があります。これを試してみると、CyclicalForeignKeyException が発生します。おそらくどこかに FK サイクルがあるためです。これは問題ありません。これは SQL Server の厄介な制限のようです。私の場合、SQL Server 2008 R2 を使用しています。

これについて私が読んだ3つの提案は次のとおりです。

  1. サイクルを取り除きます。(この DB を変更したくないため、オプションではありません。)
  2. キーを一時的に取り外し、後でリセットします。(同じ理由でオプションではありません。)
  3. DB 内のすべてのオブジェクトをスクリプト化します。(これは可能ですが、この DB は大きいため、理想的なソリューションではありません。)

私が読んだ別の同様の提案は、DB をバックアップして一時コピーを復元し、FK を削除してからデータを取得することでした。しかし、DB が大きいため、これも理想的ではありません。

誰か別のアイデアがありますか?

4

1 に答える 1

3

うわー-これがうまくいったなんて信じられない...

別のマシンでデータを取得しようとしていた同様のバージョンの DB があります。今回はツールを実行したところ、うまくいきました。(ツールの意味: タスク -> スクリプトの生成... 1 つのテーブルを選択し、高度な設定で、[スクリプトへのデータの種類] を [データのみ] に変更します。)

最初は、この別のバージョンの DB には循環キーが含まれていてはいけないと思っていましたが、SQL Server Management Studio 2012 Express を使用していることに気付きました。次に、SSMS を閉じ、ドメイン ユーザーで runas /netonly を実行し、SSMS 2012 を開き、SQL Server 2008 R2 DB に接続しました。スクリプトの生成を再試行したところ、うまくいきました。

どうやらSSMS 2012はこの「問題」を修正し、他のDBバージョンに対しても使用できます!

于 2013-02-21T23:12:09.613 に答える