首页 > 解决方案 > 将数据从一个数据库(和服务器)复制到另一个的问题(违反主键约束)

问题描述

我正在尝试获取我们远程数据库的本地副本。我不能做一个“复制数据库”,因为它不会复制到 SQLExpress。所以我尝试用数据编写脚本以在我的本地重新创建,它一直到“结束”3次,然后只是说“生成脚本失败”。所以我只编写了架构脚本。所有表都是空的,但现在我收到“重复键”错误(当然在最后),如下所示:

错误 0xc0202009:数据流任务 1:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft OLE DB Provider for SQL Server”Hresult:0x80004005 描述:“语句已终止。”。OLE DB 记录可用。来源:“Microsoft OLE DB Provider for SQL Server”Hresult:0x80004005 说明:“违反主键约束‘PK__tbl_AICC__3214EC07D26FCB1E’。无法在对象‘dbo.tbl_AICC_Results’中插入重复键。重复键值为 (1)。”。(SQL Server 导入和导出向导)

我尝试检查“删除表中的行”我尝试检查“删除并重新创建表”,然后我得到一个无法截断,因为表是外键,但我使用这个禁用了所有约束:

EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

对于那些建议备份的人......它没有被列为选项:

在此处输入图像描述

该数据库托管在 Azure 上,所以我不确定这是否是我无法进行备份和还原的原因。

因为我得到“无法插入只读 ID”,所以我不再得到那个,所以我只能假设删除有效。非常感谢任何帮助。

标签: sql-server

解决方案


如果我没看错 - 您想从远程 Azure SQL 数据库移动/复制到本地实例。如果是这样,那么您需要在 Azure 中创建一个 BACPAC,将其复制到本地并将其用于您的本地系统。

请参阅这些文档: https ://docs.microsoft.com/en-us/sql/relational-databases/data-tier-applications/export-a-data-tier-application?view=sql-server-ver15

https://docs.microsoft.com/en-us/azure/azure-sql/database/database-export

https://docs.microsoft.com/en-us/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database?view=sql-服务器-ver15


推荐阅读