首页 > 解决方案 > dacpac 文件向 LocalDB 发布错误:“无法部署该元素。该元素包含无法在目标数据库中重新创建的状态。”

问题描述

您会认为这很简单,但是由于我无法编辑此数据库中的架构,因此当我将 dacpac 文件发布到本地数据库时,我不知道如何克服此错误。我正在尝试获取托管在 Azure 中的数据库的副本,并将其保存在本地以用于我自己的开发目的。我不是数据库的系统管理员,但除此之外我可以完全访问它。这是一个生产数据库,所以我不能因为明显的原因搞砸任何事情。

我什至一开始就创建了这个 dacpac 文件。在尝试将数据导出为 bacpac 文件时,我收到了更多错误/警告(这是我真正想要做的,但我稍后会担心)。

这是我正在尝试的命令:

SqlPackage.exe /Action:Publish /SourceFile:" C:\Data\opkCore.dacpac" /TargetConnectionString:"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=opkCore; Integrated Security=true;"

这是我用来创建 dacpac 文件的内容:

sqlpackage.exe /Action:Export /ssn:tcp:<MyDatabase>.database.windows.net,1433 /sdn:opkCore /su:<MyUserName> /sp:<MyPassword> /tf:C:\Data\opkCore.bacpac 

我尝试了其他解决方案,例如:

  1. 导出数据层应用程序,但我仅限于在 Azure 容器中执行此操作,我无法控制它。这是一种现收现付模式,显然不支持 blob 存储
  2. 复制数据库仅适用于 2005 及更早版本,这是 SQL 2019
  3. 将数据库部署到 Microsoft SQL Server Azure SQL 数据库
  4. 导入数据层应用程序,与 #1 相同的问题
  5. 使用 SqlPackage.exe 导出 bacpac 文件 - 到处都是我无法修复的错误。数据库不是我搞砸的

我可以一次导出一个表,但是我缺少某些可以一起工作的模式,所以我也会在那里出错。

我真的应该能够以与我们的生产服务器上当前完全相同的状态获得数据库的本地副本。关于我如何做到这一点的任何其他想法将忽略数据库的问题,而只是让我得到一个与数据库在生产中完全相同的方式的本地副本?执行此操作或其他任何操作的第三方工具?

标签: sql-serverazure-sql-databasessmsdatabase-backups

解决方案


我决定只编写所有表的脚本并在我的新数据库上运行脚本。有很多错误,但它尽其所能,这是数据库模式的 99.99%,这对我的目的来说已经足够了。也许我也会尝试将数据导出和导入。

编辑:要导出我刚刚使用 SSMS 导出数据的数据,使用的目标是我刚刚从脚本创建的新 LocalDB 数据库。


推荐阅读