0

我有一个需要聚集索引的天蓝色数据库。我想使用 Entity-Framework 6 Alpha 2,因为我想使用新的异步功能。当我使用 SQL Express 2012 在本地机器上测试它时,一切都很好,但是当我使用我的 azure 数据库尝试它时,我收到以下错误:

此版本的 SQL Server 不支持没有聚集索引的表。请创建聚集索引并重试。

我不知道该怎么做,因为当我使用空数据库对其进行测试时,每个主键都是聚集索引。

有任何想法吗?

4

1 回答 1

0

您能否对“Windows Azure 上的现有数据库”以及与 EF 6 一起使用的情况进行一些说明?首先 - 您使用的是 EF CodeFirst、ModelFirst、DatabaseFirst 吗?那么如果你真的有现有的数据库,你是如何创建它的呢?手动 DB + Schema,使用一些向导(SSMS、SQL Azure 迁移向导、EF CodeFirst 创建它等?)。这个现有的数据库是如何结束在 Azure 中的?

然后追踪完整的错误消息,检查它发生在哪个表上,并在该表上手动添加聚集索引。确实,您在 SQL Server 中创建的每个主键默认也是一个 CLUSTERED。但是如果表是先创建的,那么主键是作为单独的 DDL 语句(ALTER TABLE ....)添加的,它可能没有被创建为 CLUSTERED。

所以,信息很清楚——请先创建聚集索引。找出 SQL Azure 抱怨的表并在其上创建聚集索引。如果它没有主键,只需添加一个作为 CLUSTERD:

ALTER TABLE [dbo].[Individual]
ADD CONSTRAINT [PK_Individual_CustomerID]
PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)

如果它有一个主键 - 检查包含哪些列,删除它,然后将其重新创建为集群。

于 2012-12-14T11:06:36.517 回答