【问题标题】:SQL Azure not recognizing my clustered IndexSQL Azure 无法识别我的聚集索引
【发布时间】:2011-11-05 15:30:27
【问题描述】:

当我尝试在 SQL Azure 表中插入一行时出现以下错误。

此版本不支持没有聚集索引的表 SQL 服务器。请创建聚集索引,然后重试。

我的问题是我在那个表上有一个聚集索引。我使用 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 不能识别我的集群密钥?我的脚本错了吗?

【问题讨论】:

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


    【解决方案1】:

    您的脚本仅在该表尚不存在时创建该表。也许还有没有聚集索引的旧版本的表?您可以检查:

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

    如果存在的表没有聚集索引,可以加一个如下:

    alter table tblPasswordReset add constraint
        PK_tblPasswordReset primary key clustered
    

    据我所知,您的声明确实符合Azure create table spec

    【讨论】:

    • 当我运行该选择脚本时,我确实得到了 PK_tblPasswordReset type_desc = CLUSTERED 的结果。这很奇怪......
    • 桌子上有触发器吗? select * from sys.triggers where object_id = object_id('tblPasswordReset') 触发器可能会在非聚集表上执行插入操作。
    • 我刚刚在 SQL Azure DB 上运行了您的确切脚本,它运行良好。我怀疑问题在于您的数据库中的其他内容与此脚本冲突。也许是以前创建的表格版本?
    • @Andomar 此表没有任何触发器
    • @knightpfhor 我在运行脚本和创建表时没有任何问题。当我尝试通过 .NET 在数据库中插入一行时,我得到了错误。我在想我有其他版本的表格,但我不知道如何检查。
    【解决方案2】:

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

    (我会将此作为评论,但我的帖子数量太少了)

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 1970-01-01
      • 2010-10-23
      • 2015-07-04
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      相关资源
      最近更新 更多