11

Azure SQL V12 から開発ボックスにエクスポートしてから、ローカルの SQL (2014) インスタンスにインポートするプロセスに精通しています。新しい Win10 ボックスを起動して、SQL 2016 CTP をインストールしました。私は同じ Azure インスタンスに接続しており、それに対して操作できます。また、2014 と同様に .bacpac をエクスポートできます。

しかし、ローカルにインポートしようとすると、次のようになります。

Could not import package.
Warning SQL72012: The object [FOO33_Data] exists in the target, but it will not be dropped even though you selected the 'Generate drop statements for objects that are in the target database but that are not in the source' check box.
Warning SQL72012: The object [FOO33_Log] exists in the target, but it will not be dropped even though you selected the 'Generate drop statements for objects that are in the target database but that are not in the source' check box.
Error SQL72014: .Net SqlClient Data Provider: Msg 547, Level 16, State 0, Line 3 The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.Address_dbo.User_idUser". The conflict occurred in database "FOO33", table "dbo.User", column 'idUser'.
Error SQL72045: Script execution error.  The executed script:
PRINT N'Checking constraint: FK_dbo.Address_dbo.User_idUser [dbo].[Address]';

ALTER TABLE [dbo].[Address] WITH CHECK CHECK CONSTRAINT [FK_dbo.Address_dbo.User_idUser];
4

1 に答える 1

9

この質問は MSDN にも寄せられて回答があったので、ここで共有します。 https://social.msdn.microsoft.com/Forums/azure/en-US/0b025206-5ea4-4ecb-b475-c7fabdb6df64/cannot-import-sql-azure-bacpac-to-2016-ctp?forum=ssdsgetstarted

リンクされた回答のテキスト:

ここで問題が発生したのは、エクスポートの進行中に変更されていた DB インスタンスを使用してエクスポート操作が実行されたためだと思われます。SQL Server の物理的なバックアップ/復元とは異なり、エクスポートではトランザクションの一貫性が保証されないため、エクスポートされたテーブル データの一貫性が失われる可能性があります。代わりに、それらは基本的に、データベース内の各テーブルに順番に接続し、select * を実行することによって実行されます。2 つのテーブル間に外部キー関係が存在し、読み取ったテーブル データに一貫性がない場合、データがデータベースに書き込まれた後、インポート中にエラーが発生し、インポート コードが外部キーを再度有効にしようとします。データベース コピー メカニズム (データベース copyDb を originalDb のコピーとして作成する) を使用することをお勧めします。これにより、トランザクションの一貫性のあるコピーが保証されます。

于 2016-03-21T18:24:03.067 に答える