3

我正在尝试从 Azure 导出 bacpac 并在 SQLEXPRESS 2016 上本地恢复它。当我尝试恢复它时,虽然我从 SSMS 中的导入数据层应用程序向导中收到以下错误:

无法导入包。

警告 SQL72012:对象 [TestBacPacDB_Data] 存在于目标中,但即使您选中了“为目标数据库中但不在源中的对象生成删除语句”复选框,它也不会被删除。

警告 SQL72012:对象 [TestBacPacDB_Log] 存在于目标中,但即使您选择了“为目标数据库中但不在源中的对象生成删除语句”,它也不会被删除

错误 SQL72014:.Net SqlClient 数据提供程序:消息 33161,级别 15,状态 1,行 1 此版本的 SQL Server 不支持无密码的数据库主密钥。错误 SQL72045:脚本执行错误。执行脚本:CREATE MASTER KEY;

经过一番挖掘,我发现已将凭据和主密钥添加到数据库中。凭据名称引用了一个 blob 存储容器,所以我想可能在某个时候设置了审核,将容器作为外部资源或类似的东西。

我想删除此凭据,以便可以在本地恢复数据库,但数据库会抛出一个错误,说明它正在使用中。我已尝试禁用 Azure 中的日志记录,但仍无法删除凭据。

我知道 Azure 有时需要时间来关闭资源,所以也许这就是原因,但我想知道是否有其他人遇到过类似的问题。

我试图避免必须为主密钥设置密码,因为我不关心本地的凭据,如以下问题:SSMS 2016 Error Importing Azure SQL v12 bacpac: master keys without password not supported

4

2 回答 2

2

最终,我们最终创建了一个主密钥。为了以这种方式在本地恢复我们的数据库,我们首先在 SSMS 中手动创建数据库,然后为其添加主密钥。这允许数据导入正常工作。

于 2017-10-18T16:14:23.587 回答
0

我遇到了完全相同的问题,并尝试了各种可能的修复方法。大多数都与重新键入系统、先制作副本等有关……但绝对没有任何效果。

如此疯狂,我最终能绕过它的唯一方法是手动编辑内部结构:

  1. 从原始来源或副本中获取 bacpac,任何地方
  2. 重命名为.zip,解压文件夹结构
  3. 编辑“model.xml”,搜索与“主密钥”和/或“共享访问签名”有关的任何内容并删除相应的节点
  4. 计算现在修改的 model.xml 的 Sha-256 校验和
  5. 替换“Origin.xml”底部的校验和
  6. 重新压缩所有文件并重命名为 xxx.bacpac
  7. 像往常一样导入到本地系统
于 2017-04-21T13:50:31.420 回答