sql server - restaurar - Error de importación de BACPAC de SQL Azure V12: "El tipo de plataforma de destino interno SqlAzureV12DatabaseSchemaProvider no admite la versión del archivo de esquema ''3.3''"
restore a bacpac (3)
Hasta hace muy pocos días, pude importar un BACPAC V12 de Azure a mi servidor local con SQL Server 2014 SP1 CU6 (12.0.4449.0).
Pero ahora, cuando intento importar el BACPAC, mi SQL Server Management Studio 2014 dice:
"Error interno. El tipo de plataforma de destino interno SqlAzureV12DatabaseSchemaProvider no admite la versión del archivo de esquema ''3.3'' (Archivo: D: / MyDB.bacpac) (Microsoft.Data.Tools.Schema.Sql)"
Creo que tengo la última versión de SQL Server 2014 SP1 con todas las actualizaciones más recientes (compilación 12.0.4449.0) pero aún así recibo este error.
¡Por favor ayuda!
Gracias
Enfrentaba el mismo problema mientras importaba una exportación de Azure a mi instancia de MSSQLLocalDB local (para la depuración local).
No quería tocar la db de Azure ni quería descargar la última vista previa.
Así que lo que hice fue como sigue en mi base de datos local :
Se ejecutó la modificación de la consulta estableciendo el valor para
MAXDOP
en 1
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 1
Importó el bacpac, que se ejecutó con éxito.
MAXDOP
el valor deMAXDOP
a 0
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0
Espero que ayude a alguien en caso de uso similar.
La solución simple "Alter" dada por Kevin (ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0) parece ser la solución rápida para resolver la crisis para cualquier persona que tenga problemas con el cliente. No importa si instala la última versión de DAC o SQL Server 2016, no es necesario resolver el problema inmediato, MÁS todo lo que está en estado de vista previa (beta). Apenas algo que quieres introducir en un entorno de producción en este momento
Aparentemente, esto solo nos sucedió si tuviéramos una base de datos v11 pendiente de actualización automática por parte de MSFT para este fin de semana pasado. Para esas actualizaciones de la base de datos que cancelamos y aplicamos la actualización nosotros mismos, el campo Grado Máximo de Paralelismo parece no haberse puesto a 0, y se produjo este error. Tenemos alrededor de 300 db y notamos esto como el patrón
Para su información: Puede comprobar ese valor de problema con esta consulta SQL
SELECT [dbscm].[value] AS [MaxDop],
[dbscm].[value_for_secondary] AS [MaxDopForSecondary],
[dbscl].[value] AS [LegacyCardinalityEstimation],
[dbscl].[value_for_secondary] AS
[LegacyCardinalityEstimationForSecondary],
[dbscp].[value] AS [ParameterSniffing],
[dbscp].[value_for_secondary] AS
[ParameterSniffingForSecondary],
[dbscq].[value] AS [QueryOptimizerHotfixes],
[dbscq].[value_for_secondary] AS
[QueryOptimizerHotfixesForSecondary]
FROM [sys].[databases] [db] WITH (NOLOCK)
LEFT JOIN [sys].[database_scoped_configurations] AS [dbscm] WITH
(NOLOCK) ON [dbscm].[name] = N''MAXDOP''
LEFT JOIN [sys].[database_scoped_configurations] AS [dbscl] WITH
(NOLOCK) ON [dbscl].[name] = N''LEGACY_CARDINALITY_ESTIMATION''
LEFT JOIN [sys].[database_scoped_configurations] AS [dbscp] WITH
(NOLOCK) ON [dbscp].[name] = N''PARAMETER_SNIFFING''
LEFT JOIN [sys].[database_scoped_configurations] AS [dbscq] WITH
(NOLOCK) ON [dbscq].[name] = N''QUERY_OPTIMIZER_HOTFIXES''
WHERE [db].[name] = DB_NAME();
Solución: para resolverlo, use la última versión preliminar de SSMS que instala la versión más actualizada de DacFx. Esto comprende cómo procesar las funciones más recientes, especialmente las opciones de configuración del ámbito de la base de datos. Una vez que esté instalado, puede Importar dentro de SSMS o usar SqlPackage desde la ubicación "C: / Archivos de programa (x86) / Microsoft SQL Server / 130 / DAC / bin" si prefiere las herramientas de línea de comandos.
De forma alternativa, ejecute el siguiente comando en la base de datos de Azure para establecer el valor MaxDop en su valor predeterminado, ya que parece que el problema es que se ha cambiado a 1. Las exportaciones futuras ahora deberían producir bacpacs que puedan ser comprendidos por las herramientas del cliente de 2014, suponiendo que no haya otras. Se han agregado nuevas funciones de Azure a la base de datos.
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0
Causa raíz / por qué sucede esto: la causa raíz es que su base de datos tiene valores no predeterminados para 1 o más opciones de configuración de ámbito de base de datos. Como solo se agregaron muy recientemente, las versiones anteriores de las herramientas no entienden cómo implementarlas y, por lo tanto, los bloques DacFx. Estas son las únicas propiedades / objetos con una versión de esquema tan alta. Básicamente, cada vez que vea un error como "no es compatible con la versión del archivo de esquema ''3.3''" significa que necesita actualizar. Una causa posible es si la base de datos se migró de AzureV1 -> AzureV12, que establece la opción MaxDop en 1 desde su valor predeterminado de 0.
Notas: Se recomienda encarecidamente que use el último SSMS y lo mantenga actualizado a través de las notificaciones de actualización integradas si está trabajando con Azure. se asegurará de que evite problemas como este. En general, si solo usa el área de superficie de SQL Server 2014, debería poder usar herramientas más antiguas al volver a importar, pero con la gran cantidad de avances recientes en casos de SQL DB de Azure como este, surgirán cada vez más a menudo donde las nuevas herramientas Se requieren para llevar a cabo como se espera.
Para referencia, a continuación se incluyen las opciones de Configuración del ámbito de la base de datos y sus valores predeterminados. Si alguna de estas propiedades no es la predeterminada en la base de datos al exportar la versión del esquema, se eliminan para que las herramientas antiguas no se rompan.
<!-- 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" />