导入SQL Server2017生成的bacpac到Azure SQL时遇平台服务错误的解决方法
解决SQL Server 2017生成的Bacpac导入Azure SQL的错误
错误原因
SSMS 2016内置的数据层应用组件(DAC)仅支持SQL Server 2016及更早版本的数据库对象(对应Sql140DatabaseSchemaProvider),而你要导入的bacpac由SQL Server 2017生成,需要兼容SQL Server 2017的DAC组件(对应Sql150DatabaseSchemaProvider),因此出现版本不匹配的错误。
可行解决方案
方案1:安装SQLPackage工具(推荐)
在Windows Server 2012R2上安装支持SQL Server 2017的SQLPackage版本(15.x及以上),通过命令行完成导入:
- 安装完成后,执行以下命令(替换占位符为你的实际信息):
SqlPackage.exe /Action:Import /SourceFile:"C:\本地bacpac文件路径\your-db.bacpac" /TargetConnectionString:"Server=tcp:你的Azure SQL服务器名.database.windows.net,1433;Initial Catalog=目标数据库名;User ID=用户名;Password=密码;Encrypt=True;"
方案2:升级SSMS到最新版本
卸载SSMS 2016,安装最新版SSMS(如19.x系列)。新版SSMS内置了兼容SQL Server 2017及更高版本的DAC组件,升级后可直接使用「导入数据层应用」功能完成导入操作。
方案3:通过Azure门户导入
- 登录Azure门户,找到目标Azure SQL服务器,点击「创建数据库」,选择「从备份导入」选项
- 将本地bacpac文件上传到Azure存储账户的容器中(需提前创建存储账户和容器)
- 按照门户指引完成数据库导入配置,等待导入完成
内容的提问来源于stack exchange,提问作者JJK
相关产品推荐
相关产品推荐

