将DACPAC部署到SQL Azure服务器时出错

时间:2012-01-18 23:17:29

标签: azure-sql-database data-tier-applications

使用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(字符串   propertyName,PropertyAccessPurpose pap)at   Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(布尔   inServer)at   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   关键)at   Microsoft.SqlServer.Management.Smo.DatabaseCollection.get_Item(字符串   名称)在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)at   Microsoft.SqlServer.Management.Dac.TransactionalActionManager.Go()at   Microsoft.SqlServer.Management.Dac.DacStore.Install(DacType dacType,   DatabaseDeploymentProperties deploymentProperties,Boolean   skipPolicyValidation,Boolean skipDacRegistration)

2 个答案:

答案 0 :(得分:1)

您是否拥有最新版本的SSMS?您应该运行SSMS R2 SP1。它具体针对DAC PAC进行了修复。

这是:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26727

答案 1 :(得分:1)

据微软称,安装VS 2010 SP1和SQL 2008 R2 SP1的顺序显然存在某种问题。

Herve的回答也可以解决这个问题(即重新安装SQL 2008 R2 SP1),但我无法验证它,因为我已经通过遵循SQL Azure团队建议的解决方案解决了这个问题 - 转到http://www.microsoft.com/download/en/details.aspx?id=26728并下载/安装新的SMO MSI(列为1033 \ x64 \ SharedManagementObjects.msi)。

谢谢MS!