SQLServerテーブル定義ツール

テーブル定義書からテーブル作成スクリプトを出力するツールです。
あれば便利な「ツール」ではありませんか?   前頁のMDB生成/テーブル定義取得ツール」もそうですが、説明の入ったテーブル定義書と実際に作成したテーブルの同期の確認は面倒なものです。
ここで紹介する方法なら、テーブル定義書からテーブル作成スクリプトを出力するので、テーブル定義書に従った(同期が取れた)テーブルが作成できます。
サンプルのテーブル定義書も含めてダウンロードできますが、 「VBA応用」のSQLServerで試してみます。」ではさらにサンプルデータを投入して配属一覧を出力するサンプルを用意しています。
ExcelSQLServerツール」を作成しました。   マクロ無しワークブックからテーブル作成スクリプトを出力させる機能としてExcelSQLServerツール」を作成しました。
なぜ「マクロ無し」かというとこのような機能のマクロが各ワークブックに残ってしまうと、数が多くなった場合にメンテナンスの手間や管理が発生してしまうということを避ける必要があったためです。
VisualBasicプログラムで利用できる項目定義テーブル記述の出力もできるようになっています。
また、文字照合順序の変更機能も盛り込んであります。こちらもぜひご覧下さい。

現在はExcelSQLServerツール」を機能強化しており、 当ページのExcelVBA版はどうしてもテーブル定義書ごとにマクロ記述が埋め込まれて分散してしまうため、 これ自身のメンテナンス性に欠けるという問題があります。
これらのことからExcelSQLServerツール」に移行していただく方が良いと思います。
いずれは本ページは削除となる予定ですのでご検討をお願いします。
シートデザインは「MDB生成/テーブル定義取得ツール」と似ています。

SQLServerテーブル定義.xltmの画面
(画像をクリックすると、このサンプルがダウンロードできます)

今回は、「読み込み」の機能は持たせていませんが、シートデザインはMDB生成/テーブル定義取得ツール」を元に作成しているため、似たものになりました。 SQLServerに合わせて、「データベース名」の指定を追加し、「属性」の選択リストも変更し、「小数桁」を追加しています。
原本はテンプレート形式としていますので、定義登録後は名前を付けて保存して下さい。

SQLServerテーブル定義(SAMPLE).xlsmの画面

使い方も、ほぼ同様です。「原紙」シートをコピーしてテーブル定義を書き込んでいきます。
この時、「データベース名」は全シートで統一させて下さい。先に「原紙」シートに「データベース名」や統一する管理項目などがあればそれを書き込んでからコピー利用するようにすると、さらに効率的に作業が進められます。
なお、SQLServerからテーブル定義を読み出す機能は搭載していません。

このサンプルから実際にサンプルデータベースを作成してみる場合で、データベース名を「SampleCorp1」から変更する場合は、4シートともに同期を取って変更して下さい。

マクロにより、SQLServerのテーブル作成スクリプトを出力します。
ここからの作業は次のようになります。
@「SQLServerテーブル定義(SAMPLE).xlsm」のマクロでテーブル作成スクリプトを出力する。
A新規データベースの場合はSQLServer上にデータベースを作成しておく。
B「Microsoft SQL Server Management Studio」上でテーブル作成スクリプトを実行する。
これだけで実際にSQLServerのデータベースに必要なテーブル群を作成することができます。 このサンプル程度のものであれば数十分で完成すると思います。

「Make_CreateTableSQL」を起動

マクロの起動で「Make_CreateTableSQL」を起動させると、登録内容の条理チェックを行なった上で、SQLServer用のテーブル作成スクリプトを出力できます。
テーブル作成スクリプトはシートごとではなく、表示されている「原紙」以外のシートに登録した全テーブルの分を1つのスクリプトに出力しますから、この作業によるテーブルの作成は短時間に行なえるわけです。

条理チェックでのエラー表示

条理チェックで問題がある場合は、エラー内容が表示されます。
エラーがある場合は、スクリプトは出力されません。条理チェックは、登録漏れや重複などの基本的なチェックであって、テーブル作成自体を保証するものではありません。

出力スクリプトの指定

条理チェックで問題がないと判断されると、スクリプトを出力するファイル名を指定するためのダイアログが表示されます。
ここで出力先フォルダとファイル名を指定して「保存」をクリックすれば、テーブル作成スクリプトのファイルが作成されます。
このサンプルから出力したスクリプトはダウンロードした圧縮ファイルに収容してあります。

スクリプトの中身を参照する

作成されたテーブル作成スクリプトを「メモ帳」などのテキストエディタで開くと、このようになっています。
シート上で細かく指定できないものなどは「デフォルト」で出力させてしまっているので、場合によってはスクリプトレベルで変更する必要がある場合もあります。 例えば「キーの重複許可」についてはプライマリキーは「不可」、インデックスキーは「許可」で出力させています。「スキーマ」についても「dbo」に固定されています。
もう一つ、説明が漏れていましたが、数値項目では「自動インクリメント」の指定があります。Accessでいう「オートナンバー型」のことに当たります。 レコードの挿入時に当該項目に値をセットせずに用いて、自動ナンバリングされるわけですが、この指定は「値要求」を「自動」にすることで設定できます。 なお、デフォルトで下限値は「1」増分「1」として設定されるので、スクリプトレベルで変更する必要がある場合もあります。

テーブル作成スクリプトを実行してみます。

「Microsoft SQL Server Management Studio」の画面

テーブル作成スクリプトをダブルクリックで起動させても問題ないことが多いですが、他のデータベースもインストールされている場合も考慮すると、先に「Microsoft SQL Server Management Studio」を起動させておいて、 そのウィンドウ上にテーブル作成スクリプトファイルをドラッグさせるのが確実な方法だと思います。

「Microsoft SQL Server Management Studio」の画面

既存のデータベースでない場合は、スクリプトを実行させる前にデータベースを作成しておいて下さい。このサンプルでは、「SampleCorp1」というデータベース名になっています。 変更する場合は、スクリプト出力前なら各シートの「データベース名」を変更し、スクリプト出力後の場合は、スクリプトファイルの先頭の「USE」の行を変更します。

「Microsoft SQL Server Management Studio」の画面

データベースが「空」の状態で作成されたら、開いたスクリプトを実行してみて下さい。
エラーが表示される場合は、エラー内容を確認してシート上の値を修正して、テーブル作成スクリプトを再出力させてから再実行します。 テーブル作成スクリプトをテキストエディタで変更して再実行させる方法もありますが、テーブル定義と実際との不整合が発生するので、面倒でも定義書から修正するようにします。

「Microsoft SQL Server Management Studio」の画面

エラーがなければ、このように「コマンドは正常に完了しました。」が表示されます。

「Microsoft SQL Server Management Studio」の画面

作成されたテーブルの状態は、このように「Microsoft SQL Server Management Studio」上で確認ができます。




いかがでしょうか。プログラミングによってはテーブルのフィールドをフィールド名ではなく配置インデックス(数値)で操作する場合があります。 手操作でのテーブル作成では配置順までは「きちんとされていない」などというケースのシステムを見てきたこともありますから、 このような方法で「テーブル定義書」と「実体のデータベースの項目」が同期されている保証がある環境で運用できると思います。




ダウンロードのこのページでの説明はこのようにテーブル作成の実現までですが、ここにある程度のサンプルデータを投入して、「配属一覧」をExcelに出力するところまでを 「VBA応用」のSQLServerで試してみます。」に用意しましたので、合わせてご覧下さい。

ダウンロードはこちら。

←SQL_TableDefines1.zip
      (127KB)