此第一个语句失败,无法使用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中删除它但是这个表没有列出它们的任何一个
答案 0 :(得分:0)
在您的示例t-sql语句中,您尝试创建一个与表格名称相同的约束,即FTSindexMO'。因此,您收到错误消息"已经有一个名为' FTSindexMO'在数据库中。"您无法创建与表名称相同的约束。这与基于磁盘的表和内存优化表的行为相同。您需要为约束使用不同的名称。
谢谢&此致,Pooja Harjani,微软SQL Server高级项目经理。