Подтвердить что ты не робот

Ошибка импорта 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), но все же я получаю эту ошибку.

Пожалуйста, помогите!

Спасибо

4b9b3361

Ответ 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

Надеюсь, что это поможет кому-то в подобном случае использования