无法从SQL Server表中删除主键

无法从SQL Server表中删除主键,sql,sql-server,constraints,Sql,Sql Server,Constraints,我有一个表的主键。我使用下面的查询检查约束 SELECT name FROM sys.key_constraints WHERE [type] = 'PK' AND [parent_object_id] = Object_id('<TableName>'); ALTER TABLE TableName DROP CONSTRAINT PK_dbo.TableName; 我试着像下面一样,但同样的错误 ALTER TABLE dbo.TableName DROP C

我有一个表的主键。我使用下面的查询检查约束

 SELECT name
 FROM sys.key_constraints
 WHERE [type] = 'PK'
   AND [parent_object_id] = Object_id('<TableName>');
 ALTER TABLE TableName DROP CONSTRAINT PK_dbo.TableName;
我试着像下面一样,但同样的错误

 ALTER TABLE dbo.TableName DROP CONSTRAINT PK_dbo.TableName;
查询执行失败,错误消息为:

无法执行查询。错误:“.”附近的语法不正确


上面的查询有什么问题?

请确保约束名称中有

如果有,请在方括号内键入约束名称,否则请确保提供了正确的名称

ALTER TABLE dbo.TableName DROP CONSTRAINT [PK_dbo.TableName];

注意:不建议在对象名称中使用点、空格等字符。相反,使用下划线,如
PK\u dbo\u TableName

,这是因为主键名中有
。可以通过如下方式使用
[]
来避免:

ALTER TABLE dbo.TableName DROP CONSTRAINT [PK_dbo.TableName];

谢谢约束名称周围的方括号修复了我的问题。