2016-05-12 147 views
-2

我创建了一个存储过程来查询名为EscalationStatus的表中的所有记录。如何解决存储过程脚本中的无效对象名称?

但在执行SQL Server中的SQL脚本2014 Management Studio中,在这里我声明的程序名称,则会引发错误的 -

"Msg 208, Level 16, State 6, Procedure GET_STATUS, Line 19 
Invalid object name 'dbo.GET_STATUS'." 

我检查了程序名称相匹配的SQL名以下脚本,并且数据库名称是有效的。

我也采取了“刷新智能感知缓存”,它没有清除错误的步骤。

问: 有谁知道为什么存储过程的名称作为无效的对象名称评估?

表名是EscalationStatustables

`GET_STATUS` stored procedure: 

USE [NOTIFICATION] 
GO 
/****** Object: StoredProcedure [dbo].[GET_STATUS] Script Date: 12/05/2016 11:50:53 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[GET_STATUS] 
AS 

    BEGIN  

SELECT 
     [EscStatus] 
     ,[Color] 
    FROM NOTIFICATION.dbo.EscalationStatus 

    END 
+2

SP实际上是否存在?即你有尝试用'CREATE'替换'ALTER'吗? –

+0

什么是SQL Server 2013? –

+1

如果您正在创建一个新的存储过程,那么使用CREATE而不是ALTER。 (CREATE PROCEDURE [dbo]。[GET_STATUS] ...) –

回答

1

从阿尔特过程脚本删除以下行或在上面的查询:

`GET_STATUS` stored procedure: 

注释掉的第一行使用这个:

--`GET_STATUS` stored procedure: 

USE [NOTIFICATION] 
GO 
/****** Object: StoredProcedure [dbo].[GET_STATUS] Script Date: 12/05/2016 11:50:53 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[GET_STATUS] 
AS 

    BEGIN  

SELECT 
     [EscStatus] 
     ,[Color] 
    FROM NOTIFICATION.dbo.EscalationStatus 

    END 
+0

任何投票的理由?我不认为我在这里做了任何错误.. –

+0

'GET_STATUS'存储过程:这一行将反抗会导致问题。 –

+0

我可以在这里看到一些序列downvotes :(我做了不同的smtg,因为你的答案看起来正确:)那么,你可以添加一些关于'create'或'alter'的单词。 – Arvo

-1

关注t他的模板创建/修改过程

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

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE proc [dbo].[P1] 
AS 
BEGIN 
    SELECT 1 AS VAL 
END 

GO