将数据库备份(.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;
答案 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文件。这要容易得多。