SQL Server创建表给出了错误,即对象''已存在但不存在

时间:2016-07-24 21:16:39

标签: sql sql-server-2008 create-table

很抱歉,如果这看起来像重复但我找不到我的情况的答案。我正在尝试在数据库cardissuedates中创建表NBFP

这是我的创建声明:

USE NBFoodPantry

CREATE TABLE cardissuedates 
(
    clientid char(36) NOT NULL,
    issuedate date NOT NULL

    CONSTRAINT cardissuedates 
       PRIMARY KEY CLUSTERED (clientid ASC)
           WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                 IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                 ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

我收到此错误:

  

Msg 2714,Level 16,State 5,Line 33
  数据库中已经有一个名为“cardissuedates”的对象。

     

Msg 1750,Level 16,State 0,Line 33
  无法创建约束或索引。查看以前的错误。

NBFB数据库中不存在该表,当我检查master和NBFB时,我找不到它。

我试过了

select * 
from sys.all_objects
where name like '%ca%'
order by 1

select * 
from sys.tables
where name like 'c%'
order by 1

select * 
from sys.all_columns
where name like 'c%'
order by 1

我甚至创建了一个新数据库并使用USE语句中的新数据库名称执行了此create语句。同样的错误。

我已停止退出SSMS的所有服务。似乎没什么用。 我不知道在哪里看。

任何帮助都会非常感激。

由于

1 个答案:

答案 0 :(得分:5)

您为主键提供与表相同的名称,这是不允许的,因为两者都是架构范围的对象,而且多个对象不能具有相同的schema_name.object_name。你可以这样做:

CREATE TABLE cardissuedates ( 
    clientid char(36) NOT NULL, 
    issuedate date NOT NULL CONSTRAINT 
    pk_cardissuedates PRIMARY KEY CLUSTERED ( clientid ASC )
    WITH (
        PAD_INDEX = OFF, 
        STATISTICS_NORECOMPUTE = OFF, 
        IGNORE_DUP_KEY = OFF, 
        ALLOW_ROW_LOCKS = ON, 
        ALLOW_PAGE_LOCKS = ON, 
        FILLFACTOR = 90
    ) ON [PRIMARY] 
) ON [PRIMARY]

我刚刚将前缀PK_添加到约束