azure – 由于外键冲突无法恢复bacpac

前端之家收集整理的这篇文章主要介绍了azure – 由于外键冲突无法恢复bacpac前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将sql Azure数据库的备份(.bacpac)还原到另一个sql Azure数据库,但由于以下错误而无法执行此操作:

Error encountered during the service operation. Could not import
package. 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_x_xx”. The conflict occurred in database
“x”,table “dbo.x”. Error sql72045: Script execution error. The
executed script: PRINT N’Checking constraint: FK_x_xx[dbo].[x]’; ALTER
TABLE [dbo].[x] WITH CHECK CHECK CONSTRAINT [FK_x_xx];

我还试图在本地恢复但没有成功使用mscorlib异常(我将再次尝试它,并将很快更新确切的错误消息.

我检查了实时数据库,我看不出为什么这个密钥被违反了.

我还尝试修改.bacpac中包含的model.xml来删除约束但是这会失败,因为它现在(正确地说)会失败校验和验证.

解决方法

bacpac文件不是事务性的,因此在生成bacpac时写入目标数据库的新行最终会破坏索引.数据库要么没有其他用户连接进行写入,要么您可以复制数据库并从副本中生成bacpac.

1)复制目标数据库,它将立即返回,但数据库将需要一些时间来复制.此操作将创建完整的事务副本:

CREATE DATABASE <name> AS COPY OF <original_name>

2)找到复制操作的状态:

SELECT * FROM sys.dm_database_copies

3)在复制的数据库生成bacpac文件,任何人都不会使用该文件.

4)删除复制的数据库,你将有一个工作的bacpac文件.

猜你在找的MsSQL相关文章