微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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文件.

原文地址:https://www.jb51.cc/mssql/77413.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐