我在azure上有一个需要聚集索引的数据库。我想使用Entity-Framework6Alpha 2,因为我想使用新的异步功能。当我在我的本地机器上使用SQL Express 2012测试它时,一切都很好,但当我在我的azure数据库中尝试它时,我得到了以下错误:
此版本的SQL Server不支持没有聚集索引的表。请创建聚集索引,然后重试。
我不知道该怎么做,因为当我用一个空数据库测试它时,每个主键都是一个聚集索引。
有什么想法吗?
发布于 2012-12-14 19:06:37
你会在“Windows Azure上的现有数据库”和EF 6上使用的情况下添加一点澄清吗?首先,你在使用EF CodeFirst,ModelFirst,DatabaseFirst吗?那么如果你真的有现有的数据库,你是如何创建它的呢?DB +模式手动,使用一些向导(SSMS,SQL Azure迁移向导,EF CodeFirst创建它,等等)。这个现有的数据库是如何在Azure中结束的?
然后跟踪完整的错误消息,检查发生错误的表,并在该表上手动添加聚集索引。确实,在SQL Server中创建的每个主键在默认情况下也是群集的。但是如果表是首先创建的,那么主键将作为单独的DDL语句添加(ALTER table ...)它可能不是作为群集创建的。
所以,这条消息很清楚--请先创建聚集索引。找出SQL Azure抱怨的是哪个表,并在其上创建聚集索引。如果没有主键,只需添加一个作为CLUSTERD:
ALTER TABLE [dbo].[Individual]
ADD CONSTRAINT [PK_Individual_CustomerID]
PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)如果它有主键-检查包含哪些列,删除它,然后将其重新创建为集群。
https://stackoverflow.com/questions/13875496
复制相似问题