当前位置: 首页 > 面试题库 >

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

农弘毅
2023-03-14
问题内容

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

服务操作期间遇到错误。无法导入包。错误SQL72014:.Net SqlClient数据提供程序:消息547,级别16,状态0,第3行ALTER
TABLE语句与FOREIGN KEY约束“ FK_x_xx”发生冲突。数据库“ x”的表“
dbo.x”中发生了冲突。错误SQL72045:脚本执行错误。执行的脚本:PRINT N’检查约束:FK_x_xx [dbo]。[x]’; ALTER
TABLE [dbo]。[x]带检查检查约束[FK_x_xx];

我还曾尝试通过mscorlib异常在本地进行还原,但未成功(我将再次尝试进行该操作,并将在不久后通过确切的错误消息进行更新。

我已经检查了实时数据库,但看不到为什么违反了该密钥。

我还尝试了修改中model.xml包含的内容.bacpac以删除约束,但这失败了,因为现在(正确的是)它无法通过校验和验证。


问题答案:

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

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

CREATE DATABASE <name> AS COPY OF <original_name>

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

SELECT * FROM sys.dm_database_copies

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

4)删除复制的数据库,您将拥有一个有效的bacpac文件。



 类似资料:
  • 在待机模式下对PostgreSQL db运行查询时,我得到以下错误。导致错误的查询在1个月内正常工作,但当查询超过1个月时,会导致错误。 有什么解决的建议吗?谢谢

  • 我开始在我的spring managed java项目中使用flyway(我也在使用hibernate)。 我遵循了飞行路线的文档。我还配置了maven插件,一切正常。 尝试使用maven插件进行清理、初始化和迁移,一切正常。 相反,如果我尝试运行我的应用程序(其中有我的flyway bean): 我看到了: 创建数据库的模式 创建schema_version表 我的脚本创建整个数据库工作 不幸的

  • 忽略依赖项的警告 警告:dependency org.apache.httpcomponents:httpclient:4.0.1在调试时被忽略,因为它可能与Android提供的内部版本冲突。如果有问题,请用jarjar重新打包以更改类包警告:dependency org.apache.httpcomponents:httpclient:4.0.1将被忽略以发布,因为它可能与Android提供的内

  • 当使用Spring数据@OneTomany关系和@Jointable时,如何修复外键约束冲突? 当我尝试像这样删除时: 它会抛出以下错误: 错误:表“Attachment”上的update或delete违反表“Email_Attachment”上的外键约束“Email_Attachment_Attachment_ID_FKEY”详细信息:键(id)=(6)仍然从表“Email_Attachment

  • 我遇到了一个罕见的,但令人沮丧的问题,Postgres似乎错过了我的主键冲突,并抛出一个错误的唯一索引,我没有把我的ON冲突。 例如: 表: 列: 有时这运行得很好,但有时它告诉我 我肯定我错过了什么,但我不知道是什么。我需要从集合中删除唯一列吗?为什么这不总是抛出一个错误?