存储过程不显示数据库中的代码

时间:2011-05-18 19:42:37

标签: sql sql-server stored-procedures

我有一个奇怪的问题。我已经创建了一个存储过程并成功执行了它。

但是当我尝试在数据库中查找它时,它不会显示过程中的代码。我的意思是,如果我右键单击并说修改以查看我的过程的代码,它只显示以下代码:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE Proc_Name

为什么它没有显示完整的代码?我从数据库中删除了该过程并再次执行,然后它说“数据库中已经有一个名为'Proc_Name'的对象。”它显示相同的代码。

3 个答案:

答案 0 :(得分:1)

如果右键单击 - “修改”未显示存储过程的文本,请尝试以下操作:

SELECT text 
FROM syscomments 
WHERE id = (SELECT id FROM sysobjects WHERE name = 'proc_name') 

将proc_name替换为相关存储过程的名称。

如果可行,我会考虑使用标准模板重新创建它,就像右键单击“存储过程 - 新存储过程”并清除任何奇怪格式时所获得的那样。

答案 1 :(得分:1)

  use <Database name>
    go
    sp_helptext <procname>

或者找到程序

select * from sys.objects where name like '%<Procedure_name>%' and type='P'

答案 2 :(得分:0)

也许proc是用&#34; WITH ENCRYPTION&#34;创建的。标记以故意隐藏代码。另一种可能性是其他人是该对象的所有者,并且您没有权限访问其代码。