【SQL Server】接続しているDB内のすべてのテーブルの定義情報を抽出する
SQLServerにおいて、すべてのテーブルの定義情報をまとめて取得する際にお手軽に取得できるクエリです。
sp_Msforeachtableはundocumentedなストアドプロシージャですが、すべてのテーブルに対し、処理を実行してくれるため何かと便利です。
sp_MSforeachtable @command1 = "sp_help '?'"
尚、事前に以下手順で出力をファイル形式かつタブ区切りにしておくとエクセルに貼り付けやすくてよいかと思います。
①クエリエディタ上で右クリックを押下して、「結果の出力(R)」-「結果をファイルに出力」を選択。
②クエリエディタ上で右クリックを押下し、「クエリオプション」を選択。
③左ペインの「結果」配下の「テキスト」を選択し、出力形式(O)で”タブ区切り”を選択して「OK」を押下。
あとはクエリを実行すると出力先を決めることができるので、保存すればよいかと。
ちなみにテーブルおよびインデックスのDDLをすべて出力したいこともあるかと思います。
こちらに関しては、GUI操作に出力が簡単です。
①左ペインのオブジェクトエクスプローラでデータベースを選択し、右クリックを押下し、「タスク(T)」-「スクリプトの生成(E)」を選択。
②次へを押下。
③「テーブル」にチェックをいれます。
※今回はテーブル情報の出力ですが、ここでは下記のようにストアドプロシージャなども出力可能です。
④以下に応じて選択します。
全テーブルで1ファイルとしたければ、「生成するファイル」を単一ファイル
1テーブルごとに1ファイルとしたければ、「生成するファイル」をオブジェクトごとに1つのファイル
また、詳細設定(A)を選択すると下記のような出力オプションが選ぶことができます。
今回は、インデックスのスクリプトを作成をFalse⇒Trueとして実行してみます。
出力したファイルは下記のようなものとなります。