如何在SQL Server Management Studio中查看存储的过程代码


75

我是SQL Server的新手。我通过SQL Server Management Studio登录到数据库。

我有一个存储过程列表。如何查看存储过程代码?

右键单击存储过程没有诸如的任何选项view contents of stored procedure

谢谢。


您必须对其进行“修改”。
杰里米·霍洛瓦奇

Answers:


48

右键单击存储的过程,然后选择脚本存储过程,将其创建为“创建到新查询编辑器”窗口/剪贴板/文件

您也可以在右键单击名称时进行修改

如果一次要处理1个以上的进程,请单击存储过程文件夹,按CTRL键,按F7键,然后单击选择所有所需的,然后右键单击并选择脚本存储过程为CREATE。


6
当我只看过程时,我更喜欢“脚本存储过程为CREATE”而不是“修改”,因此我不会意外更改过程。
simon 2012年

125

我想这是查看存储过程代码的更好方法:

sp_helptext <name of your sp>

11
当结果显示为文本时(Ctrl + T键盘快捷键),此方法最有效。
Florin Dumitrescu 2014年

2
@FlorinDumitrescu-我更喜欢将其保留在网格模式下,并且执行以下操作非常快,现在对我来说是第二自然:sp_helptext YourSPName,F5,单击标题栏“ Text”,ctrl-c,在查询中单击任何位置,ctrl -a,ctrl-v,ctrl-home,ctrl-r。我之所以喜欢这样,是因为我可以突出显示语法,而不必滚动到文件的开头。(而且它比ctrl-t稍好一点,因为它没有在文件前添加“文本---------------”。)
TTT 2016年

35

该选项称为Modify

在此处输入图片说明

这将在一个新的查询窗口中为您显示存储过程的T-SQL代码,并带有一个ALTER PROCEDURE ...导入,因此您可以轻松地更改或修改过程并进行更新


如果修改被禁用?我没有修改权限
亚历山大



10

建议使用对象资源管理器并将存储过程编写脚本到新的查询编辑器窗口中的其他答案以及其他查询都是可靠的选择。

我个人喜欢使用以下查询在单行中检索存储的过程定义/代码(我使用的是Microsoft SQL Server 2014,但看起来这应该适用于SQL Server 2008及更高版本)

SELECT definition 
FROM sys.sql_modules 
WHERE object_id = OBJECT_ID('yourSchemaName.yourStoredProcedureName')

有关sys.sql_modules的更多信息:

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql


似乎是最好的解决方案,因为其他所有方法都会弄乱长定义。但是它不考虑重命名的模块。从sys.sql_modules中选择*,其中object_id = object_id(N'dbo.SpRenameDemo'); 从sys.sql_modules中选择*,其中object_id = object_id(N'dbo.SpRenameDemo_Oops'); `
blaz

9

exec sp_helptext'your_sp_name'-不要忘记引号

默认情况下,在Management Studio中,结果显示在网格视图中。如果您想在文本视图中查看它,请转到:

查询->结果到->结果到文本

或CTRL + T,然后执行。


2

您可以使用此查询查看存储在数据库中的所有对象代码:

    USE [test] --Database Name
SELECT
    sch.name+'.'+ob.name AS       [Object], 
    ob.create_date, 
    ob.modify_date, 
    ob.type_desc, 
    mod.definition
FROM 
     sys.objects AS ob
     LEFT JOIN sys.schemas AS sch ON
            sch.schema_id = ob.schema_id
     LEFT JOIN sys.sql_modules AS mod ON
            mod.object_id = ob.object_id
WHERE mod.definition IS NOT NULL --Selects only objects with the definition (code)

1

如果像我这样没有权限进行“修改”,则可以安装一个名为“ SQL Search”的免费工具(通过redgate)。我用它来搜索我知道将在SP中使用的关键字,它会返回SP代码的预览,并突出显示关键字。

巧妙!然后,我将此代码复制到自己的SP中或在其中查看

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.