SQL データベース プロジェクトをお使いになる前に
適用対象: SQL Server 2022 (16.x) Azure SQL データベース Azure SQL Managed Instance
SQL データベース プロジェクトは、テーブル、ストアド プロシージャ、関数など、単一データベースのスキーマを構成する SQL オブジェクトをローカルで表現したものです。 SQL データベース プロジェクトの開発サイクルにより、データベース開発を、開発の成功事例として使い慣れた継続的インテグレーションおよび継続的デプロイ (CI/CD) ワークフローに統合できます。
この記事では、新しい SQL プロジェクトの作成、プロジェクトへのオブジェクトの追加、プロジェクトのビルドと配置の手順を説明します。 Visual Studio (SQL Server Data Tools) の手順を除き、このガイドでは SDK スタイルの SQL プロジェクトに焦点を当てています。
前提条件
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Note
SQL データベース プロジェクトのデプロイを完了するには、Azure SQL または SQL Server インスタンスにアクセスする必要があります。 Windows または Containers でSQL Server Developerエディションを使用して、ローカルで無料で開発できます。
ステップ 1: 新しいプロジェクトを作成する
オブジェクトを手動で追加する前に、新しい SQL データベース プロジェクトを作成してプロジェクトを開始します。 スキーマ比較ツールの使用など、既存のデータベースのオブジェクトをプロジェクトにすぐに設定できるようにするプロジェクトを作成する方法は他にもあります。
[ファイル]、[新規作成]、[プロジェクト] の順に選択します。
[新しいプロジェクト] ダイアログ ボックスの検索ボックスで用語 [SQL Server] を使用します。 上位の検索結果は、SQL Server データベース プロジェクト に鳴るはずです。
次へを選択して、次の手順に進みます。 データベース名と一致する必要のないプロジェクト名を指定します。 必要に応じて、プロジェクトの場所を確認して変更します。
[作成] を選択してプロジェクトを作成します。 編集用に [ソリューション エクスプローラー] に空のプロジェクトが開き表示されます。
[ファイル]、[新規作成]、[プロジェクト] の順に選択します。
[新しいプロジェクト] ダイアログ ボックスの検索ボックスで用語 [SQL Server] を使用します。 上位の検索結果は、SQL Server データベース プロジェクト、SDK スタイル (プレビュー) になるはずです。
次へを選択して、次の手順に進みます。 データベース名と一致する必要のないプロジェクト名を指定します。 必要に応じて、プロジェクトの場所を確認して変更します。
[作成] を選択してプロジェクトを作成します。 編集用に [ソリューション エクスプローラー] に空のプロジェクトが開き表示されます。
VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、[新規プロジェクト] ボタンを選択します。
最初のプロンプトでは、主にターゲット プラットフォームが SQL Server か Azure SQL かに基づいて、使用するプロジェクト テンプレートが決定されます。 特定のバージョンの SQL を選択するように求められたら、ターゲット データベースと一致するバージョンを選択しますが、ターゲット データベースのバージョンが不明な場合は、値を後で変更できるため、最新バージョンを選択します。
表示されるテキスト入力にプロジェクト名を入力します。データベース名と一致する必要はありません。
表示される [フォルダーの選択] ダイアログで、プロジェクトのフォルダー、.sqlproj
ファイル、その他のコンテンツが保持されるディレクトリを選択します。
SDK スタイルのプロジェクト (プレビュー) を作成するかどうかを確認するメッセージが表示されたら、[はい] を選択します。
完了すると、空のプロジェクトが開かれ、編集できるよう [データベース プロジェクト] ビューに表示されます。
Microsoft.Build.Sql プロジェクト用の .NET テンプレートをインストールすると、コマンド ラインから新しい SQL データベース プロジェクトを作成できます。 -n
オプションはプロジェクトの名前を指定し、-tp
オプションはプロジェクト ターゲット プラットフォームを指定します。
使用できるすべてのオプションを確認するには、-h
オプションを使用します。
# install Microsoft.Build.Sql.Templates
dotnet new sqlproject -n MyDatabaseProject
手順 2: プロジェクトにオブジェクトを追加する
ソリューション エクスプローラーで、プロジェクト ノードを右クリックして、[追加]、[テーブル] を選びます。 [新しい項目の追加] ダイアログボックスが表示され、テーブル名を指定できます。 [追加] を選択して、SQL プロジェクトにテーブルを作成します。
このテーブルは、Visual Studio テーブル デザイナーでテンプレート テーブル定義と共に開き、列、インデックス、その他のテーブル プロパティを追加できます。 最初の編集が完了したらファイルを保存します。
ビュー、ストアド プロシージャ、関数など、[新しい項目の追加] ダイアログを使用して、さらに多くのデータベース オブジェクトを追加できます。 ソリューション エクスプローラーでプロジェクト ノードを右クリックし、[追加] を選択し、目的のオブジェクト型を選択して、ダイアログにアクセスします。 プロジェクト内のファイルは、[追加] の [新規フォルダー] オプションを使用してフォルダーに整理できます。
ソリューション エクスプローラーで、プロジェクト ノードを右クリックして、[追加]、[新しいアイテム] の順に選択します。 [新しい項目の追加] ダイアログが表示されるので、[すべてのテンプレートを表示]、[テーブル] の順に選択します。 ファイル名としてテーブル名を指定し、[追加] を選択して、SQL プロジェクトにテーブルを作成します。
このテーブルは、Visual Studio クエリ エディターでテンプレート テーブル定義と共に開き、列、インデックス、その他のテーブル プロパティを追加できます。 最初の編集が完了したらファイルを保存します。
ビュー、ストアド プロシージャ、関数など、[新しい項目の追加] ダイアログを使用して、さらに多くのデータベース オブジェクトを追加できます。 ソリューション エクスプローラーでプロジェクト ノードを右クリックし、[追加] を選択して、[すべてのテンプレートを表示] の選択後に目的のオブジェクト型を選択して、ダイアログにアクセスします。 プロジェクト内のファイルは、[追加] の [新規フォルダー] オプションを使用してフォルダーに整理できます。
VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクト ノードを右クリックし、[テーブルの追加] を選択します。 表示されるダイアログで、テーブル名を指定します。
テンプレート テーブル定義を使用してテキスト エディターでテーブルが開き、列、インデックス、その他のテーブル プロパティを追加できます。 最初の編集が完了したらファイルを保存します。
ビュー、ストアド プロシージャ、関数など、プロジェクト ノードのコンテキスト メニューを使用して、データベース オブジェクトをさらに追加できます。 VS Code または Azure Data Studio の [データベース プロジェクト] ビューでプロジェクト ノードを右クリックしてから、目的のオブジェクト型を右クリックして、ダイアログにアクセスします。 プロジェクト内のファイルは、[追加] の [新規フォルダー] オプションを使用してフォルダーに整理できます。
ファイルは、プロジェクト ディレクトリまたは入れ子になったフォルダーに作成することで、プロジェクトに追加できます。 ファイル拡張子は .sql
である必要があり、オブジェクト型またはスキーマとオブジェクト型別に整理することをお勧めします。
テーブルの基本テンプレートは、プロジェクトで新しいテーブル オブジェクトを作成するための開始点として使用できます:
CREATE TABLE [dbo].[Table1]
(
[Id] INT NOT NULL PRIMARY KEY
)
手順 3: プロジェクトをビルドする
ビルド プロセスでは、オブジェクト間のリレーションシップと、プロジェクト ファイルで指定されたターゲット プラットフォームに対する構文が検証されます。 ビルド プロセスからの成果物の出力は .dacpac
ファイルであり、プロジェクトをターゲット データベースに配置するために使用でき、データベース スキーマのコンパイル済みモデルが含まれています。
ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーと警告がある場合、[出力] ウィンドウに表示されます。 ビルドが成功すると、ビルド成果物 (.dacpac
ファイル) が作成され、その場所がビルド出力に含まれます (デフォルトは bin\Debug\projectname.dacpac
)。
ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーと警告がある場合、[出力] ウィンドウに表示されます。 ビルドが成功すると、ビルド成果物 (.dacpac
ファイル) が作成され、その場所がビルド出力に含まれます (デフォルトは bin\Debug\projectname.dacpac
)。
VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーと警告がある場合、[出力] ウィンドウに表示されます。 ビルドが成功すると、ビルド成果物 (.dacpac
ファイル) が作成され、その場所がビルド出力に含まれます (デフォルトは bin/Debug/projectname.dacpac
)。
SQL データベース プロジェクトは、dotnet build
コマンドを使用してコマンド ラインからビルドできます。
dotnet build
# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj
ビルド出力には、エラーや警告、および発生した特定のファイルと行番号が含まれます。 ビルドが成功すると、ビルド成果物 (.dacpac
ファイル) が作成され、その場所がビルド出力に含まれます (デフォルトは bin/Debug/projectname.dacpac
)。
手順 4: プロジェクトをデプロイする
.dacpac
ファイル内のデータベース スキーマのコンパイル済みモデルは、SqlPackage
コマンドライン ツールまたはその他の配置ツールを使用して、ターゲット データベースにデプロイできます。 デプロイ プロセスでは、.dacpac
で定義されているスキーマに一致するようにターゲット データベースを更新するために必要な手順を決定し、データベースに既に存在するオブジェクトに基づいて必要に応じてオブジェクトを作成または変更します。 結果として、デプロイ プロセスは羃等です。つまり、問題を引き起こすことなく複数回実行でき、状態を事前に定義しなくても、同じ .dacpac
を複数のデータベースにデプロイできます。
ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、[発行…] をクリックします。
発行ダイアログが開き、ターゲット データベース接続 を確立します。 デプロイ用の既存の SQL インスタンスがない場合は、Visual Studio と共に LocalDB ((localdb)\MSSQLLocalDB
) がインストールされ、テストと開発に使用できます。
データベース名を指定し、[発行] を選択してプロジェクトをターゲット データベースに配置するか、[スクリプトを生成] を選択して、実行前に確認するスクリプトを生成します。
ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、[発行…] をクリックします。
発行ダイアログが開き、ターゲット データベース接続 を確立します。 デプロイ用の既存の SQL インスタンスがない場合は、Visual Studio と共に LocalDB ((localdb)\MSSQLLocalDB
) がインストールされ、テストと開発に使用できます。
データベース名を指定し、[発行] を選択してプロジェクトをターゲット データベースに配置するか、[スクリプトを生成] を選択して、実行前に確認するスクリプトを生成します。
VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクト ノードを右クリックし、[発行] を選択します。
ヒント
デプロイに使用できる SQL インスタンスがない場合、SQL データベース プロジェクトの拡張機能では、新しいコンテナーにローカル SQL Server インスタンスを作成できます。 Docker Desktop などのコンテナー ランタイムが実行されている状態で、ドロップダウン リストから [新しい SQL Server ローカル開発コンテナーに発行] を選択します。
デプロイ用の既存の SQL インスタンスがある場合は、既存の SQL Server に発行] を選択し、発行プロファイルの入力を求められた場合は [プロファイルを使用しない] を選択します。
ターゲット データベースへの接続を構成していない場合は、新しい接続を作成するように求められます。 新しい接続入力では、サーバー名、認証方法、およびデータベース名が求められます。
接続が構成されると、配置プロセスが開始されます。 デプロイを自動的に実行 (発行) するか、実行前に確認するスクリプトを生成 (スクリプトの生成) を選択できます。
SqlPackage CLI は、[発行アクション] を使用して、.dacpac
ファイルをターゲット データベースにデプロイするために使用されます。
たとえば、接続文字列に基づいてターゲット データベースに .dacpac
ファイルをデプロイするには、次のようにします:
sqlpackage /Action:Publish /SourceFile:bin/Debug/projectname.dacpac /TargetConnectionString:{yourconnectionstring}