【问题标题】:Import data tier application using bacpac使用 bacpac 导入数据层应用程序
【发布时间】:2018-09-04 14:19:07
【问题描述】:

我已成功以 .bacpac 形式从 Azure DB 导出数据库备份,但是当我要导入该 .bacpac 时,它会引发错误。

【问题讨论】:

  • 错误很简单:“此版本的 SQL Server 不支持无密码的数据库主密钥”。执行的脚本:CREATE MASTER KEY.
  • 这是您要求的声明吗?通过密码创建主密钥加密 = 'key';去

标签: sql sql-server azure azure-sql-database


【解决方案1】:

您可能在 Azure SQL 上启用了 Blob 审核,对吧?

请看这篇文章:Exported database from Azure SQL failed to be imported to Azure SQL or to local SQL Server

摘自那篇文章:

原因:
这是由 Azure SQL DB 和本地 SQL Server 安装之间的不同行为引起的

没有密码的主密钥是 Azure SQL DB 独有的功能,而本地 SQL Server 安装必须对主密钥进行密码加密。

分辨率:

选项 1
要减轻对 Azure SQL DB 的导入,请使用从 Azure 门户导入。

为了减少导入本地 SQL Server 安装,您可以更改现有主密钥并为其添加密码加密。

这应该在您导出数据库之前完成

ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = '<PasswordHere>';

选项 2 为了短期缓解,我们为您提供执行以下操作的 PowerShell 脚本:

从 bacpac 中删除主密钥对象
从 bacpac 中删除凭证对象

在 bacpac 上运行此 PS 脚本后,您将获得带有“已修补”后缀的新 bacpac 文件。

【讨论】:

    【解决方案2】:

    在将数据库导出为 bacpac 之前,您需要执行以下步骤:

    1. 如果您启用了数据库审核,请禁用它。
    2. 使用 DROP MASTER KEY 命令删除数据库主密钥。

    之后再次导出数据库并将其导入本地 SQL Server。

    【讨论】:

      【解决方案3】:

      我成功解决了这个问题,首先我在 azure db 实例中执行 CREATE MASTER KEY 脚本,然后导出该数据库。然后将该数据库导入本地 SQL 服务器。

      【讨论】:

        猜你喜欢
        • 2022-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-22
        • 1970-01-01
        • 2015-10-20
        • 1970-01-01
        相关资源
        最近更新 更多