首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于外键冲突无法恢复bacpac

由于外键冲突无法恢复bacpac
EN

Stack Overflow用户
提问于 2013-07-10 15:59:32
回答 1查看 5.9K关注 0票数 16

我试图将SQL数据库的备份(.bacpac)还原到另一个SQL数据库,但由于以下错误无法恢复:

服务操作中遇到的错误。无法导入包。Error SQL72014:.Net SqlClient数据提供程序: Msg 547,级别16,状态0,第3行ALTER语句与外键约束"FK_x_xx“冲突。冲突发生在数据库"x“表"dbo.x”中。错误SQL72045:脚本执行错误。执行的脚本:打印N‘’Checking约束: FK_x_xxdbo.x';使用CHECK约束FK_x_xx修改表dbo.x;

我还尝试在本地恢复,但没有成功地使用mscorlib异常(我将再次尝试,并将使用准确的错误消息进行更新。

我已经检查了实时数据库,我不知道为什么这个密钥被侵犯了。

我还尝试修改包含在.bacpac中的.bacpac,以删除约束,但这失败了,因为它现在(正确地)失败了校验和验证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-22 17:42:09

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

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

代码语言:javascript
复制
CREATE DATABASE <name> AS COPY OF <original_name>

2)查找副本操作的状态:

代码语言:javascript
复制
SELECT * FROM sys.dm_database_copies

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

4)删除复制的数据库,您将得到一个可工作的bacpac文件。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17575459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档