4

使用 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.SqlSmoObject.GetDbComparer(Boolean inServer) 在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer() 在 Microsoft.SqlServer.Management.Smo.SqlPropertyMetadataProvider.PropertyNameToIDLookupWithException(String propertyName, PropertyAccessPurpose pap) 在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(Boolean inServer) 在Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer() 在 Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection() 在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage() 在 Microsoft.SqlServer.Management.Smo。 Microsoft.SqlServer.Management.Smo.DatabaseCollection.get_Item(String name) 上的 SmoCollectionBase.GetObjectByKey(ObjectKeyBase key)。

4

2 回答 2

1

你有最新版本的 SSMS 吗?您应该运行 SSMS R2 SP1。它专门针对 DAC PAC 进行了修复。

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

于 2012-01-31T20:58:09.893 回答
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)。

谢谢女士!

于 2012-02-01T00:55:07.310 回答