Ошибка импорта SQL Azure V12 BACPAC: "Тип внутренней целевой платформы SqlAzureV12DatabaseSchemaProvider не поддерживает версию файла схемы" 3.3 ""
До недавнего времени мне удалось импортировать V12 BACPAC с Azure на локальный сервер с SQL Server 2014 SP1 CU6 (12.0.4449.0).
Но теперь, когда я пытаюсь импортировать 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), но все же я получаю эту ошибку.
Пожалуйста, помогите!
Спасибо
Ответы
Ответ 1
Исправить: Чтобы решить, используйте последний SSMS-предварительный просмотр, который устанавливает самую последнюю версию DacFx. Это понимает, как обрабатывать последние функции, в частности параметры конфигурации с расширенными возможностями базы данных. После установки вы можете импортировать внутри SSMS или использовать SqlPackage из каталога "C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin", если вы предпочитаете инструменты командной строки.
В качестве альтернативы выполните следующую команду в Azure DB, чтобы установить значение MaxDop обратно по умолчанию, так как кажется, что проблема в том, что это было изменено на 1. В будущем экспорте теперь должны появляться бакпаки, которые могут быть поняты клиентскими инструментами 2014 года, предполагая, что никакие другие новые функции Azure не добавлены в БД.
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0
Коренная причина/почему это происходит: Основная причина заключается в том, что ваша база данных имеет значения, отличные от значений по умолчанию для 1 или нескольких параметров конфигурации с областью хранения данных. Поскольку они были добавлены совсем недавно, более старые версии инструментов не понимают, как их развернуть, и поэтому блоки DacFx. Это единственные свойства/объекты с такой высокой версией схемы. В принципе, в любое время, когда вы видите ошибку типа "не поддерживает версию файла схемы 3,3", это означает, что вам нужно обновить. Одной из возможных причин является миграция базы данных с AzureV1 → AzureV12, которая устанавливает для параметра MaxDop значение 1 по умолчанию 0.
Примечания.. Настоятельно рекомендуется использовать новейшие SSMS и обновлять его с помощью встроенных уведомлений об обновлениях, если вы работаете с Azure. он гарантирует, что вы не столкнетесь с такими проблемами, как этот. Как правило, если вы используете только площадь поверхности SQL Server 2014, вы должны использовать старые инструменты при повторном импорте, но с огромным количеством последних достижений в Azure SQL DB такие случаи будут возникать все чаще и чаще, когда новые инструменты требуются для выполнения, как ожидалось.
Для справки, Im включает в себя параметры конфигурации области базы данных и их значения по умолчанию ниже. Если какое-либо из этих свойств не является дефолтом в БД при экспорте версии схемы, то получается, что старые инструменты не сломаются.
<!-- 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" />
Ответ 2
Простое решение "Alter", данное Кевином (ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0), похоже, является быстрым решением для разрешения кризиса для тех, у кого проблемы с клиентом. Не обращайте внимания на установку последнего ЦАП или SQL Server 2016, нет необходимости разрешать немедленную проблему, PLUS - все, что находится в состоянии предварительного просмотра (бета). Вряд ли что-то, что вы хотите ввести в производственную среду прямо сейчас
Это, по-видимому, произошло только с нами, если у нас была версия базы данных v11, ожидающая автоматического обновления с помощью MSFT, установленного для этих последних выходных. Для этих обновлений базы данных мы отменили и применили обновление самостоятельно, поле Max Degree Of Parallelism кажется, что оно не установлено в 0, и эта ошибка произошла. Мы имеем около 300 дБ и заметили это как шаблон
FYI: вы можете проверить это значение проблемы с помощью этого 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();
Ответ 3
Я столкнулся с той же проблемой, пока я импортировал экспорт из azure в свой локальный экземпляр MSSQLLocalDB (для локальной отладки).
Я не хотел прикасаться к лазурному db, и не хотел скачать последний предварительный просмотр.
Итак, то, что я сделал, было следующим: На моем локальном db:
-
Выполнено изменение запроса, устанавливающего значение для MAXDOP
до 1
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 1
-
Импортирован bacpac, который успешно работал.
-
Оставьте значение MAXDOP
равным 0
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0
Надеюсь, что это поможет кому-то в подобном случае использования