Ste*_*ano 22 sql-server azure bacpac
直到几天前,我才能使用SQL Server 2014 SP1 CU6(12.0.4449.0)将Azure中的V12 BACPAC导入到本地服务器.
但是现在,当我尝试导入BACPAC时,我的SQL Server Management Studio 2014说:
"内部错误内部目标平台型SqlAzureV12DatabaseSchemaProvider不支持模式文件版本'3.3’.(文件:d:\ MyDB.bacpac)(Microsoft.Data.Tools.Schema.Sql)"
我想我有最新的SQL Server 2014 SP1版本,包含所有最新的更新(版本12.0.4449.0),但我仍然收到此错误.
请帮忙!
谢谢
Kev*_*ane 21
修复:要解决此问题,请使用安装最新DacFx版本的最新SSMS预览版.这了解如何处理最新功能,尤其是数据库范围配置选项.安装完成后,如果您更喜欢命令行工具,则可以在SSMS内部导入或使用"C:\ Program Files(x86)\ Microsoft SQL Server\130\DAC\bin"位置中的SqlPackage.
或者,在Azure数据库上执行以下命令以将MaxDop值设置回默认值,因为它看起来已经更改为1.未来的导出现在应该生成可以被2014客户端工具理解的bacpac,假设没有其他新的Azure功能已添加到数据库中.
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0
Run Code Online (Sandbox Code Playgroud)
根本原因/为什么会发生这种情况:根本原因是您的数据库具有一个或多个Database Scoped Configuration选项的非默认值.由于这些仅在最近才添加,因此旧版本的工具无法理解如何部署它们,因此DacFx会阻止.这些是具有高架构版本的唯一属性/对象.基本上每当你看到"不支持模式文件版本''3.3'这样的错误时,就意味着你需要升级.一个可能的原因是数据库是从AzureV1迁移 - > AzureV12,它将MaxDop选项从默认值0设置为1.
注意:如果您正在使用Azure,强烈建议您使用最新的SSMS并通过内置更新通知使其保持最新.它将确保您避免遇到类似这样的问题.通常,如果您只使用SQL Server 2014表面区域,则应该能够在重新导入时使用较旧的工具,但是随着Azure SQL数据库中的大量最新进展,这样的情况会越来越频繁地出现在新工具中是为了按预期执行所必需的.
作为参考,我在下面包括Database Scoped Configuration选项及其默认值.如果导出架构版本时数据库中的任何这些属性都是非默认值,那么旧版工具就不会中断.
<!-- Database Scoped Configurations-->
<Property Name="MaxDop" Type="System.Int32" DefaultValue="0" />
<Property Name="MaxDopForSecondary" Type="System.Int32?" DefaultValue="null"/>
<Property Name="LegacyCardinalityEstimation" Type="System.Boolean" DefaultValue="false" />
<Property Name="LegacyCardinalityEstimationForSecondary" Type="System.Boolean?" DefaultValue="null" />
<Property Name="ParameterSniffing" Type="System.Boolean" DefaultValue="true" />
<Property Name="ParameterSniffingForSecondary" Type="System.Boolean?" DefaultValue="null" />
<Property Name="QueryOptimizerHotfixes" Type="System.Boolean" DefaultValue="false" />
<Property Name="QueryOptimizerHotfixesForSecondary" Type="System.Boolean?" DefaultValue="null" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9685 次 |
最近记录: |