导入数据层应用程序失败

时间:2017-12-03 09:20:51

标签: sql-server azure azure-sql-database sql-server-2016 ssms-2017

将数据库备份(.bacpac文件)还原到我的内部部署SQL Server 2016实例时,出现以下错误。

  

TITLE:Microsoft SQL Server Management Studio

     

无法导入包。

     

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

     

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

     

错误SQL72014:.Net SqlClient数据提供程序:

     

Msg 33161,Level 15,State 1,Line 1
  此版本的SQL Server不支持没有密码的数据库主密钥。

     

错误SQL72045:脚本执行错误。执行的脚本:CREATE MASTER KEY;

2 个答案:

答案 0 :(得分:3)

这是由于SQL Azure和SQL Server 2016之间存在差异。拥有没有密码的主密钥是仅限Azure的功能。有两种方法可以解决这个问题。

1)打开.bacpac并删除主密钥对象以及凭证对象。 (将.bacpac重命名为.zip,解压缩,然后查看xml文件,进行必要的更改,压缩并重命名为.bacpac)

2)在使用以下内容将数据库导出到.bacpac之前,将密码加密添加到主密钥: ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = '<PasswordHere>';

答案 1 :(得分:2)

现在有一个简单得多的解决方案。下载SSMS更新...至少是14.0.17277.0版本。这样,您就不必玩主密钥或打补丁bacpac文件。这要容易得多。