Fix: Aby rozwiązać, należy użyć latest SSMS Preview który instaluje najbardziej aktualnych wersji DacFx. Rozumie, jak przetwarzać najnowsze funkcje, w szczególności opcje konfiguracji z zakresu bazy danych. Po zainstalowaniu możesz importować pliki w SSMS lub SqlPackage z lokalizacji "C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ DAC \ bin", jeśli wolisz narzędzia wiersza poleceń.
Alternatywnie, wykonaj następujące polecenie na platformie Azure DB, aby ustawić wartość MaxDop z powrotem na domyślną, ponieważ wydaje się, że problem został zmieniony na 1. Przyszłe eksportowanie powinno teraz generować bacpaki, które mogą być zrozumiane przez narzędzia klienckie 2014 , zakładając, że żadne inne nowe funkcje Azure nie zostały dodane do DB.
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0
głównej przyczyna/dlaczego tak się dzieje: Przyczyną jest to, że baza danych nie mają domyślne wartości dla 1 lub więcej baz danych z lunetą opcji konfiguracyjnych. Ponieważ zostały one dodane dopiero niedawno, starsze wersje narzędzi nie wiedzą, jak je wdrożyć, a więc blokuje DacFx. Są to jedyne właściwości/obiekty o tej wysokiej wersji schematu. Zasadniczo za każdym razem, gdy widzisz błąd typu "nie obsługuje wersji pliku schematu" 3.3 ", oznacza to, że musisz dokonać aktualizacji. Jedną z możliwych przyczyn jest to, czy baza danych została przeniesione z AzureV1 -> AzureV12, który ustawia opcję MAXDOP do 1 z domyślnej 0.
Uwagi: To zdecydowanie zaleca się korzystanie z najnowszej SSMS i zachować go do data za pośrednictwem wbudowanych powiadomień o aktualizacji, jeśli pracujesz z Azure. Dzięki temu unikniesz problemów z takimi jak ten. Zasadniczo, jeśli korzystasz tylko z obszaru SQL Server 2014, powinieneś być w stanie używać starszych narzędzi podczas ponownego importu, ale z ogromną liczbą najnowszych osiągnięć w takich przypadkach, jak Azure SQL DB, będzie coraz częściej pojawiać się tam, gdzie nowe narzędzia są wymagane, aby wykonać zgodnie z oczekiwaniami.
W celach informacyjnych poniżej zamieszczam opcje konfiguracji zakresu bazy danych i ich domyślne wartości. Jeśli którakolwiek z tych właściwości nie jest domyślna w DB podczas eksportowania, wersja schematu zostaje podważona, aby stare narzędzia się nie zepsuły.
<!-- 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" />
Przepraszam, ale trochę mylące. Mam rację, że masz na myśli, że byłeś w stanie zaimportować BACPAC pewnego dnia i nie byłeś w stanie zaimportować BACPAC z tą samą wersją SSMS innego dnia? Jesteś pewien, że nie było żadnych aktualizacji? –
Dokładnie! Udało mi się zaimportować następujący plik: MyDB-2016-4-18-21-51.bacpac i dwa dni później MyDB-2016-4-20-10-18.bacpac dał mi błąd! I nie było żadnych aktualizacji. Dwa dni :) – Stefano