创建内存优化表失败但它仍然创建了一些我无法删除的内容

时间:2014-05-13 16:19:25

标签: sql-server-2014 memory-optimized-tables

此第一个语句失败,无法使用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 )

Msg 2714,Level 16,State 5,Line 74
数据库中已经有一个名为“FTSindexMO”的对象 Msg 1750,Level 16,State 0,Line 74
无法创建约束或索引。查看以前的错误。

但我无法删除数据库

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

Msg 3701,Level 11,State 5,Line 72
不能删除表'Gabe2a_ENRONb.dbo.FTSindexMO',因为它不存在或您没有权限。

该名称不在sysObjects

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

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

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

前一段时间我遇到了一个问题,因为常规表已经损坏,我可以从View Object Explorer Detail中删除它但是这个表没有列出它们的任何一个

1 个答案:

答案 0 :(得分:0)

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

谢谢&此致,Pooja Harjani,微软SQL Server高级项目经理。