web-dev-qa-db-ja.com

SQL Server Management Studioでストアドプロシージャコードを表示する方法

私はSQL Serverが初めてです。 SQL Server Management Studioを介してデータベースにログインしています。

ストアドプロシージャのリストがあります。ストアドプロシージャコードを表示するにはどうすればよいですか?

ストアドプロシージャを右クリックしても、view contents of stored procedureなどのオプションはありません。

ありがとう。

56
DG3

ストアドプロシージャを右クリックして、[ストアドプロシージャのスクリプト CREATE to New Query Editor Window/Clipboard/File]を選択します。

名前を右クリックして変更することもできます

一度に複数のprocが必要な場合は、ストアドプロシージャフォルダーをクリックし、Ctrlキーを押しながらF7キーを押して、必要なものをすべて選択し、右クリックしてscript stored procedure asを選択します作成

37
SQLMenace

私はこれがストアドプロシージャコードを表示するより良い方法だと思います:

sp_helptext <name of your sp>
104
Kniganapolke

オプションはModifyと呼ばれます:

enter image description here

これにより、ストアドプロシージャのT-SQLコードがALTER PROCEDURE ...リードイン付きの新しいクエリウィンドウに表示されるため、プロシージャを簡単に変更または修正して更新できます。

33
marc_s

これは、ストアドプロシージャの定義を表示する別の方法です

SELECT OBJECT_DEFINITION (OBJECT_ID(N'Your_SP'))
11
sqluser

以下のクエリを使用してください:-

SELECT object_definition(object_id) as [Proc Definition]
FROM sys.objects 
WHERE type='P'
7

オブジェクトエクスプローラーを使用し、ストアドプロシージャを新しいクエリエディターウィンドウおよびその他のクエリにスクリプト化することを推奨するその他の回答は、確実なオプションです。

個人的には、以下のクエリを使用してストアドプロシージャの定義/コードを1行で取得するのが好きです(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/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql

6
Brian T.A.

sp_helptext 'your_sp_name'

Management Studioのデフォルトでは、結果はグリッドビューで表示されます。テキストビューで表示する場合は、次の場所に移動します。

クエリ->結果へ->テキストへの結果

またはCTRL + Tを押してから実行します。

4
Ryan

私のように「変更」する許可がない場合は、「SQL Search」(redgateによる)と呼ばれる無料のツールをインストールできます。 SPにあることがわかっているキーワードを検索するために使用し、キーワードが強調表示されたSPコードのプレビューを返します。

独創的!次に、このコードを自分のSPにコピーするか、表示します

1

次のクエリを使用して、データベースに保存されているすべてのオブジェクトコードを表示できます。

    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)