2012-01-18 42 views
4

使用VS2010 SP1数据层应用程序项目,我创造我可以在简单的数据库:错误部署DACPAC到SQL Azure的服务器

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.SqlSmoObject Microsoft.SqlServer.Management.Smo.SqlPropertyMetadataProvider.PropertyNameToIDLookupWithException(字符串 propertyName的,PropertyAccessPurpose PAP)在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(布尔 inServer) .InitializeStringComparer() 在 Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer() 在 Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection() 在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage () at Microsoft.SqlServer.Man agement.Smo.SmoCollectionBase.GetObjectByKey(ObjectKeyBase 键)在 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.Sq lServer.Management.Dac.DacStore.Install(DacType dacType, DatabaseDeploymentProperties deploymentProperties,布尔 skipPolicyValidation,布尔skipDacRegistration)

回答

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!

+0

这对本地部署很好,但不能将其安装在执行我们部署的VSTS托管构建代理上。 – 2017-07-16 09:13:22