Ошибка развертывания DACPAC на сервере SQL Azure

Используя проект приложения уровня данных VS2010 SP1, я создал простейшую базу данных, которую мог:

CREATE TABLE [dbo].[Table1] ( column_1 int NOT NULL, column_2 int NULL )

Затем я успешно построил .dacpac и проверил его, развернув с помощью SSMS 2008 R2 на локальном экземпляре SQL Express (все работало нормально).

Затем я попытался использовать SSMS 2008 R2 для развертывания .dacpac на сервере SQL Azure. Мастеру удалось пройти каждый шаг (включая создание базы данных и создание схемы), но не удалось выполнить последний шаг - «Регистрация DAC в метаданных DAC» - с исключением IndexOutOfRangeException (см. Ниже).

Я попытался сделать это с существующим сервером SQL Azure, с новым сервером SQL Azure (оба терпят неудачу с одним и тем же исключением) и с сервером SQL Azure с пустой базой данных с тем же именем (этот отказал с исключением среды выполнения SSMS. ).

У меня сейчас нет идей. Мы будем очень благодарны за любые идеи о том, как развернуть .dacpacs в SQL Azure.

System.IndexOutOfRangeException: индекс находился за пределами массива. в Microsoft.SqlServer.Management.Smo.SqlPropertyMetadataProvider.PropertyNameToIDLookupWithException (String propertyName, PropertyAccessPurpose pap) в Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer (Boolean atMoSqlSmoObject. Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer () в Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection () в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage (Microsoft.SmoCollectionBase.get_InternalStoq). SmoCollectionBase.GetObjectByKey (ключ ObjectKeyBase) в Microsoft.SqlServer.Management.Smo.DatabaseCollection.get_Item (имя строки) в Microsoft.SqlServer.Management.Dac.RegisterDacStep.Execute () в Microsoft.SqlServer.ManagementManagementMacction. TransactionalStep.DoExecute () в Microsoft.SqlServer.Management.Dac.TransactionalActio nManager.ManagedActionStep.Execute () в Microsoft.SqlServer.Management.Dac.TransactionalActionManager.ExecuteActionSteps (IEnumerable`1 managedActionSteps) в Microsoft.SqlServer.Management.Dac.TransactionalActionManager.Maclage Установить (DacType dacType, DatabaseDeploymentProperties deploymentProperties, Boolean skipPolicyValidation, Boolean skipDacRegistration)


person Omri Gazitt    schedule 18.01.2012    source источник


Ответы (2)


У вас есть последняя сборка SSMS? Вы должны использовать SSMS R2 SP1. В нем есть исправления специально для DAC PAC.

Вот он: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26727

person Herve Roggero    schedule 31.01.2012
comment
У меня был SSMS R2 (10.50.1617.0), а не SP1 ... но я смог решить проблему, загрузив последнюю версию SMO. - person Omri Gazitt; 01.02.2012

Согласно Microsoft, очевидно, существует какая-то проблема, связанная с порядком установки VS 2010 SP1 и SQL 2008 R2 SP1.

Ответ Эрве также может решить проблему (например, переустановить SQL 2008 R2 SP1), но мне не удалось это проверить, потому что я уже решил проблему, следуя рекомендациям команды SQL Azure - перейдите по адресу http://www.microsoft.com/download/en/details.aspx?id=26728 и загрузите / установите новый SMO MSI (который указан как 1033 \ x64 \ SharedManagementObjects.msi).

Спасибо, MS!

person Omri Gazitt    schedule 01.02.2012
comment
Это удобно для локального развертывания, но вы не можете установить это на агентах сборки, размещенных в VSTS, которые выполняют наше развертывание. - person C. Molendijk; 16.07.2017