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;
[実行結果]
この definition のカラムが View の定義ですが、これをコピーして、新しいクエリエディターの画面を開き、ペーストすると、以下のように一行になってしまいます。
これは、SQL Server Management Studio の設定で、結果をグリッドに表示する際に、デフォルトで改行を保持しない設定になっているためです。
改行を保持するように変更します。 メニューから [ツール] > [オプション] で、オプション画面を開きます。
[クエリ結果] > [SQL Server] > [結果をグリッドに表示] で、[コピーまたは保存時に CR/LF を保持] のオプションをオンにしてください。
設定の変更は、既に開かているクエリエディターの画面には反映されないので、新しくクエリエディターの画面を開き、再度クエリーを実行します。
definition のカラムの値をコピーし、新しくクエリエディターの画面を開き、ペーストします。
今回は改行が保持された状態で、View の定義が取得できました。
ちなみに、SQL Server Management Studio の UI から取得するには、以下のようにできます。
以上、SQL Server の View の定義をクエリーで取得する方法をご説明しました。