我对从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];
由于在MSDN上也有人提出和回答了这个问题,因此我将在这里分享。https://social.msdn.microsoft.com/Forums/azure/zh-CN/0b025206-5ea4-4ecb-b475-c7fabdb6df64/cannot-import-sql-azure-bacpac-to-2016-ctp?forum=ssdsgetstarted
链接答案中的文字:
我怀疑这里出问题的原因是,导出操作是使用数据库实例执行的,而该数据库实例在导出过程中一直在变化。这可能导致导出的表数据不一致,因为与SQL Server的物理备份/还原不同,导出不能保证事务的一致性。相反,它们实际上是通过依次连接到数据库中的每个表并运行select *来执行的。当两个表之间存在外键关系并且读取的表数据不一致时,在将数据写入数据库并且导入代码尝试重新启用外键之后,导入过程中会导致错误。我们建议使用数据库复制机制(将数据库copyDb创建为originalDb的副本),以确保副本具有事务一致性,
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句