次の方法で共有


チュートリアル: 既存のデータベースから開始する

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric における SQL データベース

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 プロジェクトをビルドする

Prerequisites

# 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 edition を使用して、ローカルで無料で開発できます。

オプション 1: 既存のデータベースから新しい SQL プロジェクトを作成する

手順 1: 既存のデータベースから新しい SQL プロジェクトを作成する

Visual StudioのSQL Server オブジェクト エクスプローラーで、プロジェクトを作成するデータベースを右クリックし、新規プロジェクトの作成...を選択します。

Visual Studio の [データベースのインポート] ダイアログボックスのスクリーンショット

[新規作成Projectダイアログで、project名を入力します。 プロジェクト名はデータベース名と一致する必要はありません。 必要に応じて、プロジェクトの場所を確認して変更します。 既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 インポート設定を変更して、フォルダー構造を変更したり、インポートするオブジェクトにアクセス許可を含めたりすることができます。 インポートを開始します

[ データベースのインポート] ダイアログには、インポートの進行状況がメッセージとして表示されます。 インポートが完了すると、ソリューション エクスプローラーにインポートされたオブジェクトが表示されます。 このプロセスでは、 Import Schema Logsのプロジェクト ディレクトリ内のファイルにログが格納されます。 完了 を選択します。

オプション 1 は、Visual Studioの SDK スタイルの SQL プロジェクトでは使用できません。 代わりにオプション 2 を使用してください。

Visual Studio Codeのデータベース オブジェクト エクスプローラー ビューで、プロジェクトを作成するデータベースを選択します。 データベースを右クリックし、データベースから Create Project を選択します。

Visual Studio Code の「データベースからプロジェクトを作成」ダイアログのスクリーンショット

Visual Studio Codeでは、データベースからプロジェクトを作成 ダイアログにプロジェクト名と場所が必要です。 既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 [ 作成] を選択する前に、別のフォルダー構造を選択するか、インポートするオブジェクトに権限を含めることができます。

[データベース プロジェクト] ビューを開き、新しいプロジェクトとインポートされたオブジェクト定義を表示します。

オプション 1 は、SQL Server Management Studioでは使用できません。 代わりにオプション 2 を使用してください。

オプション 1 は、コマンド ラインでは使用できません。 代わりにオプション 2 を使用してください。

手順 2: SQL プロジェクトをビルドする

ビルド プロセスでは、オブジェクト間のリレーションシップと、プロジェクト ファイルで指定されたターゲット プラットフォームに対する構文が検証されます。 ビルド プロセスからの成果物の出力は .dacpac ファイルであり、プロジェクトをターゲット データベースに配置するために使用できます。 このファイルには、データベース スキーマのコンパイル済みモデルが含まれています。

ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、Build を選択します。

出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーまたは警告がある場合は、出力ウィンドウに表示されます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin\Debug\projectname.dacpac)。

オプション 1 は、Visual Studioの SDK スタイルの SQL プロジェクトでは使用できません。 代わりにオプション 2 を使用してください。

Visual Studio Codeの Database Projects ビューで、プロジェクト ノードを右クリックし、Build を選択します。

出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーまたは警告がある場合は、出力ウィンドウに表示されます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin/Debug/projectname.dacpac)。

オプション 1 は、SQL Server Management Studioでは使用できません。 代わりにオプション 2 を使用してください。

オプション 1 は、コマンド ラインでは使用できません。 代わりにオプション 2 を使用してください。

オプション 2: 新しい空の SQL プロジェクトを作成し、既存のデータベースからオブジェクトをインポートする

または、プロジェクトの作成手順とオブジェクトのインポート手順を分離することもできます。

手順 1: 新しい空の SQL プロジェクトを作成する

オブジェクトをインポートする前に、新しい SQL データベース プロジェクトを作成してプロジェクトを開始します。

FileNewProject を選択します。

新しいプロジェクト ダイアログ ボックスで、検索ボックスに SQL Server を入力します。 一番上の結果は SQL Server Database Project です。

[新しいプロジェクト] ダイアログのスクリーンショット。

次へを選択して、次の手順に進みます。 プロジェクト名を入力します。データベース名と一致する必要はありません。 必要に応じて、プロジェクトの場所を確認して変更します。

[作成] を選択してプロジェクトを作成します。 空のプロジェクトが開き、編集のためにソリューション エクスプローラーに表示されます。

FileNewProject を選択します。

新しいプロジェクト ダイアログ ボックスで、検索ボックスに SQL Server という用語を入力してください。 上位の結果は、SQL Server Database Project、SDK スタイル (プレビュー)、です。

[新しいプロジェクト] ダイアログのスクリーンショット。

次へを選択して、次の手順に進みます。 プロジェクト名を入力します。データベース名と一致する必要はありません。 必要に応じて、プロジェクトの場所を確認して変更します。

[作成] を選択してプロジェクトを作成します。 空のプロジェクトが開き、編集のためにソリューション エクスプローラーに表示されます。

Visual Studio Codeの Database Projects ビューで、New Project ボタンを選択します。

新しいビューレットのスクリーンショット。

最初のプロンプトは、主にターゲット プラットフォームがSQL ServerかAzure SQLかに基づいて、使用するプロジェクト テンプレートを決定します。 特定のバージョンの SQL を選択するように求められたら、ターゲット データベースに一致するバージョンを選択します。 ターゲット データベースのバージョンがわからない場合は、値を後で変更できるため、最新バージョンを選択します。

表示されるテキスト入力にプロジェクト名を入力します。データベース名と一致する必要はありません。

表示される [ フォルダーの選択 ] ダイアログで、プロジェクトのフォルダー、 .sqlproj ファイル、およびその他のコンテンツのディレクトリを選択します。

SDK スタイルのプロジェクトを作成するかどうかを確認するメッセージが表示されたら、[ はい] を選択します。

完了すると、空のプロジェクトが開き、[ データベース プロジェクト] ビューに編集用に表示されます。

FileNewProject を選択します。

「新しいプロジェクト」ダイアログ ボックスで、「SQL データベース プロジェクト」を選択します。

[新しいプロジェクト] ダイアログのスクリーンショット。

次へを選択して、次の手順に進みます。 プロジェクト名を入力します。データベース名と一致する必要はありません。 必要に応じて、プロジェクトの場所を確認して変更します。

[作成] を選択してプロジェクトを作成します。 空のプロジェクトが開き、編集のためにソリューション エクスプローラーに表示されます。

Microsoftの.NET テンプレートをインストールする場合。Build.Sql プロジェクトでは、コマンド ラインから新しい SQL データベース プロジェクトを作成できます。 -n オプションはプロジェクトの名前を指定し、-tp オプションはプロジェクト ターゲット プラットフォームを指定します。

使用できるすべてのオプションを確認するには、-h オプションを使用します。

# create a new SQL database project
dotnet new sqlproj -n MyDatabaseProject

手順 2: 既存のデータベースからオブジェクトをインポートする

ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、 Import -> Database... を選択します。。このオプションを無効にすると、データベース プロジェクトにオブジェクトが作成されている可能性があります。 オブジェクトを削除するか、新しいプロジェクトを作成できます。

[データベースのインポート] ダイアログで、オブジェクトをインポートするデータベースへの接続を選択します。 SQL Server オブジェクト エクスプローラーでデータベースに接続した場合は、history リストに表示されます。

Visual Studio の [データベースのインポート] ダイアログボックスのスクリーンショット

既定のインポート設定では、スキーマ、オブジェクト型によってフォルダーにオブジェクトがインポートされます。 インポート設定を変更して、フォルダー構造を変更したり、インポートするオブジェクトにアクセス許可を含めたりすることができます。 インポートを開始します

インポートが進む間、進行状況は [データベースのインポート] ダイアログにメッセージとして表示されます。 インポートが完了すると、インポートされたオブジェクトは ソリューション エクスプローラーログはプロジェクト ディレクトリの の下のファイルに格納されます。 [完了] を選択してプロジェクトに戻ります。

SqlPackage CLI を使用して、既存のデータベースから、手順 1 のVisual Studioで作成した新しい SQL データベース プロジェクトにオブジェクトをインポートします。 次の SqlPackage コマンドは、入れ子になったスキーマとオブジェクト型のフォルダー別に編成された MyDatabaseProject フォルダーにデータベースのスキーマをインポートします。

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

これらのフォルダーを SDK スタイルの SQL データベース プロジェクト フォルダーに配置すると、それらをインポートしたり、SQL プロジェクト ファイルを変更したりする必要なく、自動的にプロジェクトに含められます。

Visual Studio Codeの SQL Database Projects 拡張機能で、Database Projects ビューを開きます。 プロジェクト ノードを右クリックし、[データベースからプロジェクトを更新する] を選択します。

Visual Studio Code の [データベースの更新] ダイアログのスクリーンショット

[データベースの更新] ダイアログで、オブジェクトをインポートするデータベースへの接続を選択します。 [接続] ビューでデータベースに接続した場合は、履歴リストに表示されます。

[Schema Compare の変更を表示する] を選択して、インポートするオブジェクトのサブセットを確認して選択するか、[すべての変更を適用する] を選択してオブジェクトをインポートします。

ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、データベースからインポート... を選択します。

[データベースのインポート] ダイアログで、オブジェクトをインポートするデータベースへの接続を選択します。

SSMS の [データベースのインポート] ダイアログのスクリーンショット。

既定のインポート設定では、データベースからすべてのオブジェクトがプロジェクトにインポートされ、スキーマとオブジェクトの種類ごとにフォルダーに配置されますが、プロジェクト内のオブジェクトが上書きされた場合はインポートが取り消されます。 [プロジェクト内の既存のオブジェクトを上書きする] を選択すると、インポートを変更してデータベース のオブジェクトでプロジェクトを更新できます。 [インポート] を選択してインポートを開始します。

インポートが完了すると、ソリューション エクスプローラーはインポートされたオブジェクトで更新されます。

SqlPackage CLI を使用して、既存のデータベースのスキーマを .dacpac ファイルまたは個々の .sql ファイルに抽出します。 次の SqlPackage コマンドは、データベースのスキーマを抽出し、そのスキーマとオブジェクトの種類ごとに整理して .sql ファイルに保存します。

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

これらのフォルダーを SDK スタイルの SQL データベース プロジェクト フォルダーに配置すると、それらをインポートしたり、SQL プロジェクト ファイルを変更したりする必要なく、自動的にプロジェクトに含められます。

手順 3: SQL プロジェクトをビルドする

ビルド プロセスでは、オブジェクト間のリレーションシップと、プロジェクト ファイルで指定されたターゲット プラットフォームに対する構文が検証されます。 ビルド プロセスからの成果物の出力は .dacpac ファイルであり、プロジェクトをターゲット データベースに配置するために使用できます。 このファイルには、データベース スキーマのコンパイル済みモデルが含まれています。

ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、Build を選択します。

出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーまたは警告がある場合は、出力ウィンドウに表示されます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin\Debug\projectname.dacpac)。

ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、Build を選択します。

出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーまたは警告がある場合は、出力ウィンドウに表示されます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin\Debug\projectname.dacpac)。

Visual Studio Codeの Database Projects ビューで、プロジェクト ノードを右クリックし、Build を選択します。

出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーまたは警告がある場合は、出力ウィンドウに表示されます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin/Debug/projectname.dacpac)。

ソリューション エクスプローラー で、プロジェクト ノードを右クリックし、Build を選択します。

SQL Server Management Studio の ソリューション エクスプローラー スクリーンショット、ビルド オプションが利用可能です。

出力ウィンドウが自動的に開き、ビルド プロセスが表示されます。 エラーまたは警告がある場合は、出力ウィンドウに表示されます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin\Debug\projectname.dacpac)。

dotnet build コマンドを使用して、コマンド ラインから SQL データベース プロジェクトをビルドできます。

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

ビルド出力には、エラーや警告、および発生した特定のファイルと行番号が含まれます。 ビルドが成功すると、ビルド 成果物 (.dacpac ファイル) が作成され、その場所がビルド出力に含まれます (既定値は bin/Debug/projectname.dacpac)。