对SQL Server(T-SQL)中的DROP表的权限

时间:2019-06-16 19:21:17

标签: sql sql-server

在SQL Server上运行以下DROP命令(T-SQL)时,出现以下消息:

  

无法删除表'[dbo]。[TABELA]',因为该表不存在或您没有权限。

Comand

EXEC sp_MSForEachTable 'DROP TABLE [?]'

但是,当我运行另一个T-SQL命令或基本的DROP表时,不会显示以上错误消息,并且该命令已正确执行。

DROP TABLE TABELA
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

以上两个命令均有效,EXEC sp_MSForEachTable 'DROP TABLE [?]'需要许可的原因是什么?以及如何授予此权限?

1 个答案:

答案 0 :(得分:1)

尝试不带括号。它们似乎使引擎相信您要删除名为 [dbo].[tablea]的表,因为sp_MSForEachTable已经在需要时加了引号。当然,不存在名为[dbo].[tablea]的表。

EXEC sp_MSForEachTable 'DROP TABLE ?'

db<>fiddle