チュートリアル: 既存のデータベースから開始する
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
SQL プロジェクトには、テーブル、ビュー、ストアド プロシージャなど、データベース内のすべてのオブジェクトの宣言型 (CREATE ステートメント) ファイルが含まれています。 これらのファイルは、新しいデータベースの作成、既存のデータベースの更新、または単にソース管理でのデータベースの追跡に使用できます。 多くの場合、既存のデータベースがあり、最小限の労力でデータベースに一致するオブジェクトを SQL プロジェクトに作成する場合、SQL プロジェクトから開始します。
一部の SQL プロジェクト ツールには、既存のデータベースから新しい SQL プロジェクトを作成するための 1 つの手順が含まれています。 他のツールでは、新しい SQL プロジェクトを作成し、既存のデータベースからオブジェクトをインポートするためのいくつかの手順が必要です。 Visual Studio (SQL Server Data Tools) の手順を除き、このガイドでは SDK スタイルの SQL プロジェクトに焦点を当てています。
このチュートリアルのオプション 1 では、次の操作を行います。
手順 1: 既存のデータベースから新しい SQL プロジェクトを作成する 手順 2: SQL プロジェクトをビルドする
このチュートリアルのオプション 2 では、次の操作を行います。
- 手順 1: 新しい空の SQL プロジェクトを作成する
- 手順 2: 既存のデータベースからオブジェクトをインポートする
- 手順 3: SQL プロジェクトをビルドする
前提条件
- .NET 8 SDK
- Visual Studio 2022 Community、Professional、または Enterprise
- SQL Server Data Tools、Visual Studio 2022 にインストールされた SDK スタイル (プレビュー)
- SqlPackage CLI
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Note
チュートリアルを完了するには、Azure SQL または SQL Server インスタンスにアクセスする必要があります。 Windows または Containers でSQL Server Developerエディションを使用して、ローカルで無料で開発できます。
オプション 1: 既存のデータベースから新しい SQL プロジェクトを作成する
手順 1: 既存のデータベースから新しい SQL プロジェクトを作成する
Visual Studio の SQL Server オブジェクト エクスプローラーで、プロジェクトを作成するデータベースを右クリックし、[新しいプロジェクトの作成...] を選択します。
[新しいプロジェクトの作成] ダイアログで、データベース名と一致する必要のないプロジェクト名を指定します。 必要に応じて、プロジェクトの場所を確認して変更します。 既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 インポート設定を変更して、フォルダー構造を変更したり、インポートするオブジェクトにアクセス許可を含めたりすることができます。 インポートを開始します
インポートが進む間、進行状況は [データベースのインポート] ダイアログにメッセージとして表示されます。 インポートが完了すると、インポートされたオブジェクトがソリューション エクスプローラーに表示され、ログは Import Schema Logs
のプロジェクト ディレクトリ内のファイルに格納されます。 完了 を選択します。
オプション 1 は、コマンド ラインでは使用できません。 代わりにオプション 2 を使用してください。
VS Code または Azure Data Studio のデータベース オブジェクト エクスプローラー ビューで、プロジェクトを作成するデータベースを選択します。 データベースを右クリックして、[データベースからプロジェクトを作成] を選びます。
Azure Data Studio の [データベースからプロジェクトを作成] ダイアログで、プロジェクト名と場所を選択する必要があります。 既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 別のフォルダー構造を選択するか、[作成] を選択する前にインポートするオブジェクトにアクセス許可を含めることができます。
VS Code では、コマンド プロンプトでプロジェクト名と場所の入力を求められます。 既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 別のフォルダー構造を選択するか、インポートを開始する前にインポートするオブジェクトにアクセス許可を含めることができます。
[データベース プロジェクト] ビューを開き、新しいプロジェクトとインポートされたオブジェクト定義を表示します。
オプション 1 は、コマンド ラインでは使用できません。 代わりにオプション 2 を使用してください。
手順 2: SQL プロジェクトをビルドする
ビルド プロセスでは、オブジェクト間のリレーションシップと、プロジェクト ファイルで指定されたターゲット プラットフォームに対する構文が検証されます。 ビルド プロセスからの成果物の出力は .dacpac
ファイルであり、プロジェクトをターゲット データベースに配置するために使用でき、データベース スキーマのコンパイル済みモデルが含まれています。
ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーと警告がある場合、[出力] ウィンドウに表示されます。 ビルドが成功すると、ビルド成果物 (.dacpac
ファイル) が作成され、その場所がビルド出力に含まれます (デフォルトは bin\Debug\projectname.dacpac
)。
オプション 1 は、コマンド ラインでは使用できません。 代わりにオプション 2 を使用してください。
VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーと警告がある場合、[出力] ウィンドウに表示されます。 ビルドが成功すると、ビルド成果物 (.dacpac
ファイル) が作成され、その場所がビルド出力に含まれます (デフォルトは bin/Debug/projectname.dacpac
)。
オプション 1 は、コマンド ラインでは使用できません。 代わりにオプション 2 を使用してください。
オプション 2: 新しい空の SQL プロジェクトを作成し、既存のデータベースからオブジェクトをインポートする
または、プロジェクトの作成とオブジェクトのインポートの手順を個別に実行することもできます。
手順 1: 新しい空の SQL プロジェクトを作成する
オブジェクトをインポートする前に、新しい SQL Database プロジェクトを作成してプロジェクトを開始します。
[ファイル]、[新規作成]、[プロジェクト] の順に選択します。
[新しいプロジェクト] ダイアログ ボックスの検索ボックスで用語 [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 Server オブジェクト エクスプローラーでデータベースに接続している場合は、履歴の一覧に表示されます。
既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 インポート設定を変更して、フォルダー構造を変更したり、インポートするオブジェクトにアクセス許可を含めたりすることができます。 インポートを開始します
インポートが進む間、進行状況は [データベースのインポート] ダイアログにメッセージとして表示されます。 インポートが完了すると、インポートされたオブジェクトがソリューション エクスプローラーに表示され、ログは Import Schema Logs
のプロジェクト ディレクトリ内のファイルに格納されます。 [完了] を選択してプロジェクトに戻ります。
SqlPackage CLI を使用して、手順 1 で Visual Studio で作成した新しい SQL データベース プロジェクトに既存のデータベースからオブジェクトをインポートします。 次の SqlPackage コマンドは、入れ子になったスキーマとオブジェクト型のフォルダー別に編成された MyDatabaseProject
フォルダーにデータベースのスキーマをインポートします。
sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
これらのフォルダーが SDK スタイルの SQL データベース プロジェクト フォルダーに配置されると、それらをインポートしたり、SQL Database プロジェクトを変更したりする必要なく、自動的にプロジェクトに含められます。
Note
VS Code の SQL Database プロジェクト拡張機能では、データベースからプロジェクトへのオブジェクトのインポートはサポートされていません。 Azure Data Studio の SQL Database プロジェクト拡張機能を使用して、データベースからオブジェクトをインポートするか、オプション 1 に従って VS Code の既存のデータベースから新しいプロジェクトを作成します。
Azure Data Studio の SQL Database プロジェクトで、[データベース プロジェクト] を開きます。 プロジェクト ノードを右クリックし、[データベースからプロジェクトを更新する] を選択します。
[データベースの更新] ダイアログで、オブジェクトをインポートするデータベースへの接続を選択します。 接続 ビューでデータベースに接続している場合は、履歴の一覧に表示されます。
[Schema Compare の変更を表示する] を選択して、インポートするオブジェクトのサブセットを確認して選択するか、[すべての変更を適用する] を選択してオブジェクトをインポートします。
SqlPackage CLI を使用して、既存のデータベースのスキーマを .dacpac
ファイルまたは個々の .sql
ファイルに抽出できます。 次の SqlPackage コマンドは、入れ子になったスキーマとオブジェクト型のフォルダー別に編成された .sql
ファイルにデータベースのスキーマを抽出します。
sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
これらのフォルダーが SDK スタイルの SQL データベース プロジェクト フォルダーに配置されると、それらをインポートしたり、SQL Database プロジェクトを変更したりする必要なく、自動的にプロジェクトに含められます。
手順 3: SQL プロジェクトをビルドする
ビルド プロセスでは、オブジェクト間のリレーションシップと、プロジェクト ファイルで指定されたターゲット プラットフォームに対する構文が検証されます。 ビルド プロセスからの成果物の出力は .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
)。