redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

SQL Server データベース プロジェクトを使用してDBのリファクタリングを行う

はじめに

明けましておめでとうございます。本年もよろしくお願いいたします。去年はあまり更新できなかったので、今年はもっと増やしていきたいですね。
さて、Visual Studio で作成できるプロジェクトの中には、「SQL Server データベース プロジェクト」なんてものがあります。

これを利用すると、SQLDDL文(Create Table等)やストアドプロシージャをプロジェクトとして管理することが出来ます。
プロジェクトをバージョン管理システムに追加すれば、変更履歴の管理も可能。
DDLの新規追加・編集・削除などプロジェクトに加えた変更を、画面操作でDBに反映する!なんてことも出来てしまう。

以下のブログで、画面つきの詳しい説明がされています。

kkamegawa.hatenablog.jp

2014年の記事だけど、Visual Studio 2017 でも同様に操作可能です。

上記記事でも取り上げていますが、以下の点がとても便利です。

  • プロジェクトを公開して、データベースを作成・更新する

  • テーブルスキーマの比較を行い、同期する

  • 複数の発行先を切り替えることが出来る

これがあれば、Code First Migrations をわざわざ使う必要は無いですね。

DBのリファクタリングを行う

これだけだとタイトルに偽りありになってしまうので、自分の行っているリファクタリング手順を載せておきます。既にDBが存在する前提です。

  1. モデリングツールなどでDBの内容を取り込み、ER図上で編集し、SQL文を出力する

  2. ローカルPCでSQL Serverを実行し、DBを作成してSQLを実行してテーブルを作成する

  3. ローカルPCのDBとデータベースプロジェクトのスキーマ比較を行って、データベースプロジェクトを更新

Entity Framework を使用した開発を行っている場合は、さらに以下を行います。

  1. データベースからのCode First を行い、Models配下のクラス、DBContextクラスを更新する

  2. アプリケーションを起動し、LocalDB の再作成を行う

動作確認を行った後、バージョン管理システムに登録し、テスト環境に反映します。

  1. 変更内容をコミットして、プルリクエストを作成し、レビューを行う

  2. マージされたら、データベースプロジェクトを公開し、テスト環境のDBに反映する

  3. アプリケーションプロジェクトを公開し、テスト環境へデプロイする

以上です。