0

第一条语句失败,不能使用 asc

CREATE TABLE [Gabe2a_ENRONb].[dbo].[FTSindexMO] (
    [sID] [int] NOT NULL,
    [wordPos] [int] NOT NULL,
    [wordID] [int] NOT NULL,
    [charPos] [int] NOT NULL,
 CONSTRAINT [FTSindexMO] PRIMARY KEY 
    NONCLUSTERED HASH ([sID] asc, [wordPos] asc) WITH(BUCKET_COUNT = 100)
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY )

但是当我修复创建时出现错误 [FTSindexMO] 存在

CREATE TABLE [Gabe2a_ENRONb].[dbo].[FTSindexMO] (
    [sID] [int] NOT NULL,
    [wordPos] [int] NOT NULL,
    [wordID] [int] NOT NULL,
    [charPos] [int] NOT NULL,
 CONSTRAINT [FTSindexMO] PRIMARY KEY 
    NONCLUSTERED HASH ([sID], [wordPos]) WITH(BUCKET_COUNT = 100)
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY )

消息 2714,级别 16,状态 5,第 74 行
数据库中已经有一个名为“FTSindexMO”的对象。
消息 1750,级别 16,状态 0,第 74 行
无法创建约束或索引。请参阅以前的错误。

但我不能删除数据库

drop table [Gabe2a_ENRONb].[dbo].[FTSindexMO]

消息 3701,级别 11,状态 5,第 72 行
无法删除表“Gabe2a_ENRONb.dbo.FTSindexMO”,因为它不存在或您没有权限。

该名称不在 sysObjects 中

该表名未显示在 SSMS 中(我确实刷新了)

如果我用正确的语法创建另一个表,那么我可以删除它

有趣的是,如果我两次使用正确的语法,错误消息不一样
它不包括约束错误

前段时间我遇到了一个问题,常规表损坏了,我可以从查看对象资源管理器详细信息中删除它,但是这个表也没有列出

4

1 回答 1

0

在您的示例 t-sql 语句中,您试图创建一个与表同名的约束,即“FTSindexMO”。因此,您会收到错误消息“数据库中已经有一个名为 'FTSindexMO' 的对象”。您不能创建与表同名的约束。这与基于磁盘的表和内存优化表的行为相同。您需要为约束使用不同的名称。

感谢和问候,Pooja Harjani,Microsoft SQL Server 高级项目经理。

于 2014-06-05T05:07:46.740 回答