最近、開発チームはバージョン管理システムを選択することから新しいプロジェクトを開始します。開発チームの努力を調整する上で、ソース管理システムには多くの利点があります。これにより、コードへのすべての変更の完全な監査証跡が保証され、チームは特定のリビジョンまたはビルドを再現できます。プログラミングコードとともに、データベースはソース管理下に置くことができ、またそうすべきです。この記事では、リモートリポジトリにあるデータベースをデプロイする方法を見ていきます。
データベーススクリプトフォルダを含むリモートリポジトリがあると仮定します。このフォルダーには、データベースオブジェクトのDDLスクリプトが含まれています。タスクは、ローカルPCにデータベースを展開することです。デモンストレーションの目的で、VisualSVNとTortoiseSVNリポジトリブラウザを使用します。次の図は、データベーススクリプトフォルダをホストするデモリポジトリを示しています。
最初のステップは、ローカルの作業コピーを作成することです。そのためには、ローカルハードドライブにフォルダを作成し、SVNチェックアウト操作を実行する必要があります。
操作が完了すると、すべてのSQLファイルがローカルフォルダーに保存されます。これで、データベースをデプロイできます。明らかに、すべてのSQLファイルを1つずつ手動で実行することはお勧めできません。展開を自動化するために、バッチファイルを作成できます。
BATCHファイルの作成
バッチファイルを作成する必要があります。このデモでは、次の内容のsales_demo_build.batファイルを作成します。
sqlcmd -S "PC_NAME\SQLEXPRESS" -U "sa" -P "sa" -i "D:\sales_demo_build\sales_demo_build.sql" PAUSE
バッチファイルでSQLCMDユーティリティを使用しています。 SQLCMD引数の詳細については、次の記事を参照してください:sqlcmdユーティリティ。
SQLCMDの助けを借りて、sales_demo_build.sqlファイルを実行できます。作業フォルダからすべてのSQLファイルを取得し、データベースを構築します。 sales_demo_build.sqlファイルには次のコードが含まれています:
SET NOCOUNT ON GO PRINT 'Creating sales_demo1 database' USE [master] GO DECLARE @db_name NVARCHAR(255); SET @db_name = N'sales_demo1'; IF EXISTS (SELECT 1 FROM sys.databases d WHERE d.name = @db_name) BEGIN EXEC (N'ALTER DATABASE '[email protected]_name+N' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'); EXEC (N'DROP DATABASE '[email protected]_name); END; EXEC (N'CREATE DATABASE '[email protected]_name); GO USE sales_demo1 GO :On Error exit :r "D:\sales_demo1\Tables\dbo.Customers.sql" :r "D:\sales_demo1\Tables\dbo.OrderLines.sql" :r "D:\sales_demo1\Tables\dbo.Orders.sql" :r "D:\sales_demo1\Tables\dbo.Products.sql" :r "D:\sales_demo1\Tables\Constraints\Foreign Keys\dbo.OrderLines.FK.sql" :r "D:\sales_demo1\Tables\Constraints\Foreign Keys\dbo.Orders.FK.sql" PRINT 'Creation is Completed' GO
スクリプトには、実行するSQLファイルのリストが含まれています。
:rは、追加のTransact-SQLステートメントとsqlcmdコマンドをで指定されたファイルからステートメントキャッシュに解析するSQLCMDコマンドです。
これで、バッチファイルを実行できます:
それだ!これで、SSMS Object Explorerを更新して、データベースの操作を開始できます。
ご覧のとおり、これはソース管理に保存されているデータベースを展開する簡単な方法です。ただし、このタスクを解決する方法はこれだけではありません。次の記事で代替アプローチについて説明します。
便利なツール:
dbForgeソース管理–ソース管理でSQLServerデータベースの変更を管理するための強力なSSMSアドイン。