SQL Azure无法识别我的聚簇索引

时间:2011-08-28 21:24:02

标签: sql azure azure-sql-database clustered-index

当我尝试将行插入SQL Azure表时,出现以下错误。

  

此版本的版本不支持没有聚簇索引的表   SQL Server。请创建聚簇索引,然后重试。

我的问题是我在该表上有一个聚簇索引。我使用SQL Azure MW生成Azure SQL脚本。

以下是我正在使用的内容:

IF  EXISTS (SELECT * FROM sys.objects
    WHERE object_id = OBJECT_ID(N'[dbo].[tblPasswordReset]') AND type in (N'U'))
DROP TABLE [dbo].[tblPasswordReset]
GO
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects
    WHERE object_id = OBJECT_ID(N'[dbo].[tblPasswordReset]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tblPasswordReset](
    [PasswordResetID] [int] IDENTITY(1,1) NOT NULL,
    [PasswordResetGUID] [uniqueidentifier] NULL,
    [MemberID] [int] NULL,
    [RequestDate] [datetime] NULL,
 CONSTRAINT [PK_tblPasswordReset] PRIMARY KEY CLUSTERED 
(
    [PasswordResetID] ASC
)WITH (STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF)
)
END
GO

为什么SQL Azure不识别我的群集密钥?我的剧本错了吗?

2 个答案:

答案 0 :(得分:4)

如果表尚不存在,您的脚本只会创建该表。也许还有一个旧版本的表没有聚集索引?您可以查看:

select * from sys.indexes where object_id = object_id('tblPasswordReset')

如果表中没有聚集索引,您可以添加如下表:

alter table tblPasswordReset add constraint
    PK_tblPasswordReset primary key clustered

据我所知,你的陈述符合Azure create table spec

答案 1 :(得分:2)

如果您正在使用SSIS,请小心。我自己遇到了同样的问题,但是使用SSIS而不是手动插入数据。默认情况下,SSIS将删除并重新创建表,因此即使我使用聚簇索引正确定义了它,我的SSIS脚本也会失败。在SSIS向导的“编辑映射”步骤中,您可以手动定义表创建脚本。我刚刚删除了那里的表格脚本,我的导入工作正常。

(我将此留作评论,但我的帖子数量过于贫乏)