CodeZine(コードジン)

特集ページ一覧

Visual Studio Team System 2008で
データベースのスキーマ開発を効率化しよう

Visual Studio Team System 2008 Database Editionを使ってみよう(1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

スキーマの比較をしよう

 スキーマの編集をたくさんの項目に対して行っていると以前の内容とどこが変更されたのかを比較したくなるものです。そこでVSTS-DBにはスキーマの比較という機能が用意されています。スキーマの比較元、比較先にはVSTS-DBで管理しているデータベースプロジェクト、SQL Serverのインスタンスを利用することができ、表1に示す組み合わせが可能です。

表1 スキーマ比較の組み合わせ
比較元 比較先(ターゲット)
データベースプロジェクト データベースインスタンス
データベースインスタンス データベースプロジェクト
データベースインスタンス データベースインスタンス

 スキーマの比較には比較結果をターゲットに反映する機能も用意されており、その機能の都合で、上記3種類が用意されていると推測できます。

 「データベースプロジェクト→データベースインスタンス」の比較は、データベースプロジェクトで変更管理されている内容を、既存のデータベースに反映したい場合に利用するといいでしょう。

 「データベースインスタンス→データベースプロジェクト」の比較は、もともとデータベースプロジェクトの読み込み元となったデータベースインスタンスが別のところで変更されている場合にその変更を取り込むときに利用するといいでしょう。

 「データベースインスタンス→データベースインスタンス」の比較は、パッケージ開発しているようなアプリケーションの異なるバージョンで直接的に比較、編集するような場合に利用できるかもしれません。通常、運用環境にあるデータベースにこのような形でアクセスできるということは滅多にないはずですので、いずれもステージング環境(例えば、稼働中アプリケーションの検証用に用意されているバックアップ環境など)でこのような比較を行うことになるだろうということには注意しておいてください。

 さて、ではスキーマの比較を試してみましょう。Visual Studioの[データ]メニューから[スキーマの比較]‐[新規スキーマ比較]を選択します。図27のような画面が開くので、ソーススキーマ(比較元)、ターゲットスキーマ(比較先)を選択します。図27の例では、ソーススキーマにデータベースプロジェクトを、ターゲットスキーマにスキーマのインポート元にしたNorthwindデータベースを指定しています。

図27:比較元、比較先の選択
図27:比較元、比較先の選択

 読み込みが終わるとそれぞれの項目ごとに比較を行った結果が一覧で表示されます。この一覧では図28に示すように等しいか異なるか新規か、などが表示されます。

図28:スキーマの比較結果
図28:スキーマの比較結果

 図28では、[dbo].[Categories]が「異なります」と表示されています。この行を選択すると一覧の下側にどこが異なっているのかがSQL文で表示されます。

図29:[dbo].[Categories]の相違点の表示
図29:dbo.Categories

 図29を確認すると5行目が異なるテキストとして表示されています。よく確認してみるとどうやらサイズが異なっているようです。この表示は構成管理ツールでローカルファイルと構成管理サーバーのファイルの比較を行うときと非常によく似た表示方法です。TFSやVSSでソースの比較をされたことがあれば、なじみやすいのではないでしょうか。

 比較を行った結果はそのままターゲットスキーマに反映させることも、ターゲットスキーマを更新するSQL文を生成することもできまず。どちらも Visual Studioの[データ]メニューから[スキーマの比較]‐[更新の書き込み](直接変更を反映する場合)または[エクスポート先]‐[エディタ]または[ファイル](更新を反映させるSQL文を生成する場合)とすることで実施できます。

図30:比較結果の反映方法の選択
図30:比較結果の反映方法の選択

 なお、SQL文を生成すると図31のようなコードが生成されます。

図31:SQLの生成結果
図31:SQLの生成結果

 SQLを生成した場合は、何も編集せずに実行すれば直接反映を行った場合と同じになります。例えば、更新をしたい部分だけをピックアップすれば一部分だけ反映させるといったことにも応用が考えられます。

まとめ

 今回は既存のDBからスキーマを読み込み、編集から比較するという一番シンプルな部分を順に追ってみてみました。デザイナが貧弱、Oracleに対応していない、SQL Server 2008対応はGDRを別途インストールする必要があるなど、少し不便に感じる部分もあったのではないでしょうか。このあたりは、初期デザインをVisioやSSMSで行ってしまい、ある程度固まってきたらVSTS-DBに移して変更管理を活用していくといったことで、VSTS-DBのいいところだけをうまく引き出していくことができると考えています。

 次回は、ストアドプロシージャの開発に焦点を当て、主にストアドプロシージャの単体テストを行っていくための機能を紹介する予定です。

参考文献



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Visual Studio Team System 2008 Database Editionを使ってみよう

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5