ビュー、関数、ストアドプロシージャのSQLを取得するsp_helptext [SQLServer]

データベースに作成済みのビュー、関数、ストアドプロシージャなどのSQLを確認したい場合には、SQL Server Management Studioのオブジェクトエクスプローラーで対象のオブジェクトを探し出して表示し、オブジェクトを右クリックして表示されるコンテキストメニューの[○○をスクリプト化] > [新規作成] > [新しいクエリ エディター ウィンドウ]をクリックすることでソースのSQLを表示することができます。

SQLServerのオブジェクトブラウザからSQLを表示

しかし、わざわざオブジェクトエクスプローラーのツリービューを展開していってオブジェクトを探すのは、オブジェクトの数が増えてくると面倒なものです。

今回は、Transact-SQLのクエリエディターでビュー、関数、ストアドプロシージャなどのSQLを取得して表示する方法を紹介します。

本記事ではデータの取得、表示にMicrosoftが公開しているデータベースの「AdventureWorks2017」を使用しています。

クエリエディターでオブジェクトのSQLを取得して表示

クエリエディターでビュー、関数、ストアドプロシージャなどのオブジェクトのSQLを表示するには、システム ストアド プロシージャのsp_helptextを使用します。

sp_helptextは以下の構文で使用します。

ビューのSQLを取得して表示

以下の例ではデータベース[AdventureWorks2017]のビュー[HumanResources.vEmployee]のSQLを取得しています。

sp_helptextの実行結果

HumanResources.vEmployeeビューのSQLを取得

取得結果のSQLテキストを掲載しておきます。

関数のSQLを取得して表示

以下の例ではデータベース[AdventureWorks2017]の関数[dbo.ufnGetContactInformation]のSQLを取得しています。

sp_helptextの実行結果

ufnGetContactInformation関数のSQLを取得

取得結果のSQLテキストを掲載しておきます。

ストアドプロシージャのSQLを取得して表示

以下の例ではデータベース[AdventureWorks2017]の関数[dbo.uspGetBillOfMaterials]のSQLを取得しています。

sp_helptextの実行結果

uspGetBillOfMaterialsプロシージャのSQLを取得

取得結果のSQLテキストを掲載しておきます。

sp_helptextではシステムプロシージャのSQLも取得して表示することができます。

以下の例ではsp_helptextでsp_helptext自身のSQLを取得しています。

sp_helptextの実行結果

システムプロシージャsp_helptextのSQLを取得

取得結果のSQLテキストを掲載しておきます。

テーブルの計算列の数式を取得して表示

sp_helptextではテーブルの計算列の数式を取得して表示することもできます。

計算列の情報を取得する際はsp_helptextを以下の構文で使用します。

以下の例ではデータベース[AdventureWorks2017]のテーブル[Sales.SalesOrderHeader]の計算列である[SalesOrderNumber]と[TotalDue]の数式を取得しています。

sp_helptextの実行結果

SalesOrderHeaderテーブルのSalesOrderNumber列とTotalDue列の数式を取得

SQL Server Management Studioのテーブルデザイナーで列を選択した時に表示される列のプロパティにある[計算列の指定]に入力されている数式が取得されます。

sp_helptextプロシージャはクエリエディターを操作しながら既存のオブジェクトのSQLを取得して表示することができるので、例えば既存のオブジェクトのSQLを拡張して新しいオブジェクトを作成する場合などにクエリエディターから離れることなく拡張元のSQLを取得して加工ができるので使い方によっては作業効率がグッと上がります。

参考URL
sp_helptext (TRANSACT-SQL)