Ошибка развертывания DACPAC на сервере SQL Azure - PullRequest
4 голосов
/ 19 января 2012

Используя проект приложения уровня данных 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 inServer) в Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer () в Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer () в Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection () в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage () в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetObjectByKey (ObjectKeyBase ключ) в Microsoft.SqlServer.Management.Smo.DatabaseCollection.get_Item (String имя) в Microsoft.SqlServer.Management.Dac.RegisterDacStep.Execute () в Microsoft.SqlServer.Management.Dac.TransactionalActionManager.ManagedActionStep.TransactionalStep.DoExecute () в Microsoft.SqlServer.Management.Dac.TransactionalActionManager.ManagedActionStep.Execute () в Microsoft.SqlServer.Management.Dac.TransactionalActionManager.ExecuteActionSteps (IEnumerable`1 managedActionSteps) в Microsoft.SqlServer.Management.Dac.TransactionalActionManager.Go () в Microsoft.SqlServer.Management.Dac.DacStore.Install (DacType dacType, DatabaseDeploymentProperties внедрениеProperties, логическое значение skipPolicyValidation, логическое значение skipDacRegistration)

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

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

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

Спасибо MS!

1 голос
/ 01 февраля 2012

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

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

...