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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...