SQL Server - View の定義をクエリーで取得する方法

SQL Server - View の定義をクエリーで取得する方法

ここでは、SQL Server の View の定義をクエリーで取得する方法をご説明します。

View の定義をクエリーで取得するには、データベースを選択して、クエリエディターを開き、以下のクエリーを実行します。

SELECT	S.name AS SchemaName,
	O.name AS ViewName,
	M.definition
FROM	sys.sql_modules AS M
	   INNER JOIN sys.objects AS O
	      ON M.object_id = O.object_id
	   INNER JOIN sys.schemas AS S
	      ON O.schema_id = S.schema_id
WHERE	O.type = 'V' -- View
	AND O.name = 'ビューの名前'
ORDER BY S.name,
	 O.name;

例えば、Adventure Works のサンプルデータベースで、vEmployee という名前の View の定義をクエリーで取得するには、次のようにできます。

SELECT	S.name AS SchemaName,
	O.name AS ViewName,
	M.definition
FROM	sys.sql_modules AS M
	   INNER JOIN sys.objects AS O
	      ON M.object_id = O.object_id
	   INNER JOIN sys.schemas AS S
	      ON O.schema_id = S.schema_id
WHERE	O.type = 'V' -- View
	AND O.name = 'vEmployee'
ORDER BY S.name,
	 O.name;

[実行結果]

SQL Server - View の定義をクエリーで取得する方法 1


この definition のカラムが View の定義ですが、これをコピーして、新しいクエリエディターの画面を開き、ペーストすると、以下のように一行になってしまいます。

SQL Server - View の定義をクエリーで取得する方法 2


これは、SQL Server Management Studio の設定で、結果をグリッドに表示する際に、デフォルトで改行を保持しない設定になっているためです。

改行を保持するように変更します。 メニューから [ツール] > [オプション] で、オプション画面を開きます。

SQL Server - View の定義をクエリーで取得する方法 3


[クエリ結果] > [SQL Server] > [結果をグリッドに表示] で、[コピーまたは保存時に CR/LF を保持] のオプションをオンにしてください。

SQL Server - View の定義をクエリーで取得する方法 4


設定の変更は、既に開かているクエリエディターの画面には反映されないので、新しくクエリエディターの画面を開き、再度クエリーを実行します。

SQL Server - View の定義をクエリーで取得する方法 5


definition のカラムの値をコピーし、新しくクエリエディターの画面を開き、ペーストします。

今回は改行が保持された状態で、View の定義が取得できました。

SQL Server - View の定義をクエリーで取得する方法 6


ちなみに、SQL Server Management Studio の UI から取得するには、以下のようにできます。

SQL Server - View の定義をクエリーで取得する方法 7


以上、SQL Server の View の定義をクエリーで取得する方法をご説明しました。

© 2010-2024 SQL Server 入門