【问题标题】:Create Memory Optimized Table Failed But It Still Created Something I Cannot Delete创建内存优化表失败,但它仍然创建了我无法删除的内容
【发布时间】:2014-05-13 16:19:25
【问题描述】:

第一个语句失败了,不能使用 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 中(我确实刷新了)

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 2013-12-07
      • 2022-08-15
      相关资源
      最近更新 更多