使用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)
答案 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!