加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:59:24 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试将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,
我正在尝试将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文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读