【发布时间】:2013-06-29 04:32:47
【问题描述】:
这个创建失败,因为已经有一个[PK_docEnum1ssThes]
如何删除[PK_docEnum1ssThes]?
[PK_docEnum1ssThes] 在 sys.objects[docEnum1ssThes] 在 sys.objects
但[docEnum1ssThes] 不在 SSMS 中drop table [docEnum1ssThes] 失败ALTER TABLE [dbo].[docEnum1ssThes] DROP CONSTRAINT [PK_docEnum1ssThes] 失败
CREATE TABLE [dbo].[docEnum1ssThes]
(
[searchID] [smallint] NOT NULL,
[thesID] [smallint] NOT NULL,
CONSTRAINT [PK_docEnum1ssThes] PRIMARY KEY CLUSTERED
(
[searchID] ASC,
[thesID] ASC
)
);
附:还有一个孤立的 FK,但我能够在 FK 表中删除它。
有趣的是,这是唯一一个带有dbo 的用户表。
我可以更改 PK 的名称并创建表。
但是表名是docEnum1ssThes 而不是dbo.docEnum1ssThes
我尝试删除表格时遇到的错误是:
消息 3701,第 11 级,状态 5,第 1 行 无法删除表 'dbo.docEnum1ssThes',因为它不存在或您没有权限。
所以这可能是一个权限的事情,但我在角色 serveradmin
在查看对象资源管理器详细信息的 SSMS 中,该表已列出
从那里我可以删除表
好诡异
【问题讨论】:
-
您确定它没有与其他表关联吗?
SELECT OBJECT_NAME(parent_object_id) FROM sys.objects WHERE name = N'PK_docEnum1ssThes'; -
@AaronBertrand 它与 [docEnum1ssThes] 相关联。但该表不在 SSMS 中,也不在 SysObjects 中。如果我尝试删除它,我会得到并且错误表不存在。
-
也检查
OBJECT_SCHEMA_NAME(parent_object_id)。 SQL Server 不会就对象的存在对您撒谎。显然它就在那里,但你一定没有找对地方。 -
我错了——它是 SysObjects 但不在 SSMS 中
-
OBJECT_SCHEMA_NAME(parent_object_id) = DBO
标签: sql-server-2008 tsql constraints create-table