2

我尝试执行这个命令:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.njams_test_sql_2.[PROC_CHECK_TRACE_SETTINGS]') AND type in (N'P', N'PC'))
   DROP PROCEDURE dbo.njams_test_sql_2.[PROC_CHECK_TRACE_SETTINGS]
GO

但我收到了这个错误:

消息 166,级别 15,状态 1,第 1 行
“删除过程”不允许将数据库名称指定为对象名称的前缀

我要做的是删除数据库中的所有对象,使数据库为空。我正在使用 Microsoft SQL Server 2014 Management Studio。

4

2 回答 2

2

正如错误清楚地表明的那样 - 您不能将数据库名称用作DROP PROCEDURE.

您需要确保连接到正确的数据库,然后您需要执行

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.njams_test_sql_2.[PROC_CHECK_TRACE_SETTINGS]') AND type in (N'P', N'PC'))
   DROP PROCEDURE [PROC_CHECK_TRACE_SETTINGS]
GO
于 2015-02-27T09:43:49.910 回答
0

您需要更改数据库名称和架构的顺序。

这是错误的:

DROP PROCEDURE dbo.njams_test_sql_2.[PROC_CHECK_TRACE_SETTINGS]

这是对的:

DROP PROCEDURE njams_test_sql_2.dbo.[PROC_CHECK_TRACE_SETTINGS]

或者,您可以将它们放在一边。然后使用当前数据库和默认模式(最有可能dbo):

DROP PROCEDURE [PROC_CHECK_TRACE_SETTINGS]
于 2015-07-05T13:30:14.157 回答