2011-11-01 59 views
2

我是Windows服务器的新手,我有一个很有希望的快速问题。我正在查找SQL Server 2008 Management Studio中的存储过程。我跑了这个查询,在SQL Server 2008 Management Studio中查找存储过程

SELECT name, type 
FROM dbo.sysobjects 
WHERE (type = 'P') 

它返回一个存储过程列表。我正在寻找的那个在列表中。现在我需要知道如何/在哪里找到这个。我正在浏览左侧的结构,并且看到“存储过程”的几个文件夹,但是我没有在任何列表中看到我正在查找的项目。有SQL向我展示存储过程还是需要在SQL Server Management Studio中打开它?这也可能是我连接的用户的权限问题?

感谢您的任何帮助。

+0

下的数据库,我只是系统数据库和数据库快照,我没有看到我的实际数据库..这是我认为存储过程将是。谢谢。 – Skylude

回答

4

这听起来像是一个权限问题。这是否会为你返回任何东西?

use YourDatabaseName; 
GO 

sp_helptext 'YourSchemaName.YourProcedureName'; 
+0

是的,sp_helptext确实给我返回信息,它返回过程。但是,我无法在“存储过程”下找到它,我需要对其进行编辑。任何帮助表示赞赏。 – Skylude

+1

@SkylerCain更改返回到“ALTER PROCEDURE”的“CREATE PROCEDURE”并进行更改。 –

+0

你是我这一天乔的英雄。谢谢。 – Skylude

0

我相信这种情况的查询是:

select * 
from yourDB.information_schema.routines 
where routine_type = 'PROCEDURE' 

但是,如果你没有看到你的数据库的更多的则可能是你使用的是不具有访问权限的用户。

+0

如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码样本”按钮(“{}”)以精确地设置格式并进行语法突出显示! –

7

可以使用sp_helptext的随时查看存储过程的内容:

sp_helptext 'mystoredprocname' 

您还可以找到存储过程通过

1)选择您的数据库,并扩大它

2)展开可编程性节点

3)展开存储过程节点

4)通过存储过程列表进行搜索,直到找到正在查找的列表为止

+0

真棒,这非常有帮助。我现在可以看到该过程,更新这些存储过程的最佳方式是什么。我是否需要能够在Programmability节点下看到它们,因为我没有看到它们,但我可以运行sp_helptext和其他查询来查看它们。 – Skylude

+0

最简单的方法是导航到左侧导航栏中的存储过程,右键单击它并选择“修改”。这将在Query窗口中生成一个Alter Procedure脚本,然后您可以修改它。完成修改后,可以按“执行”按钮更改数据库中存储过程的内容。 –

0

我们常常遵循语法:

create procedure procedureName 
......... 

如果你这样做了,你的存储过程将在你执行create procedure脚本的数据库的dbo模式下创建。

现在,以防万一,如果你想你的SP移动到你需要修改SP

alter procedure [schemaName].[USP_SP] 
0

我有一个脚本需要的模式。 那就是:

--===================================================================================== 
-- looking at all databases to find a stored procedure named @spName 
-- marcelo miorelli 
-- 1-april-2014 
--===================================================================================== 
DECLARE @SQL NVARCHAR(max) 
    ,@spName VARCHAR(100) = 'usp_sel_CAEval4_comments' -- THE PROCEDURE THAT I AM LOOKING FOR 

SELECT @SQL = STUFF((
      SELECT CHAR(10) + ' UNION ALL '   + CHAR(10) + 
' SELECT ' + quotename(NAME, '''') + ' AS DB_NAME ' + CHAR(10) + 
'   , SCHEMA_NAME(s.schema_id) AS THE_SCHEMA ' + CHAR(10) + 
'   , s.name COLLATE Latin1_General_CI_AS AS THE_NAME ' + CHAR(10) + 
' FROM ' + quotename(NAME) + '.sys.procedures s ' + CHAR(10) + 
' WHERE s.name = @spName 
    AND s.[type] = ''P''' 
      FROM sys.databases 
      ORDER BY NAME 
      FOR XML PATH('') 
       ,TYPE 
      ).value('.', 'nvarchar(max)'), 1, 11, '') 

--PRINT @SQL 

EXECUTE sp_executeSQL @SQL 
    ,N'@spName varchar(100)' 
    ,@spName 
相关问题