次の方法で共有


SQL Server Management Studio の Database DevOps (プレビュー)

SQL データベース プロジェクトは、テーブル、ストアド プロシージャ、関数など、単一データベースのスキーマを構成する SQL オブジェクトをローカルで表現したものです。 SQL データベース プロジェクトの開発サイクルは、データベース開発を、開発のベスト プラクティスとして使い慣れた継続的インテグレーションおよび継続的配置 (CI/CD) ワークフローに統合するのに役立ちます。 SSMS では、プレビュー段階の Microsoft.Build.Sql プロジェクトを使用して、データベース オブジェクトのローカル定義を提供することで、データベースの変更を実装、管理、共同作業することができます。

この記事では、SQL Server Management Studio (SSMS) でデータベース DevOps ワークフローの一部として SQL データベース プロジェクトを使用する方法、またはデータベース DevOps ワークフローを固定する方法について説明します。 SQL データベース プロジェクトの詳細については、「 SQL データベース プロジェクト」を参照してください。

前提条件

新しいプロジェクトの作成

SSMS で SQL データベース プロジェクトを操作するには、プロジェクト ファイルを含むローカル フォルダーが必要です。 プロジェクトを開始するには、既存のデータベースからオブジェクトを抽出するか、新しいオブジェクト ファイルを最初から作成します。

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

SSMS では、ソリューション エクスプローラーからファイルを開くときにサーバーに接続するように求められる場合があります。 データベースに接続しなくても、オフラインで SQL データベース プロジェクト開発を実行できます。

既存のデータベースからオブジェクトを追加する

SqlPackage を使用して、オブジェクトの種類別に整理された個々の .sql ファイルに既存のデータベースからスキーマを抽出します。 次のコマンドを実行して、データベース オブジェクトを含むフォルダー構造を作成します。

sqlpackage /Action:Extract /SourceConnectionString:"<connection-string>" /TargetFile:"<temp-folder>" /p:ExtractTarget=SchemaObjectType

/p:ExtractTarget=SchemaObjectType パラメーターは、スキーマとオブジェクトの種類 (dbo/Tablesdbo/StoredProceduresなど) に基づいて、抽出されたファイルをサブフォルダーに整理します。 プロジェクト ディレクトリの外部にある一時フォルダーに展開し、エクスプローラーを使用して目的の内容をプロジェクト フォルダーにコピーします。

SqlPackage 抽出オプションの詳細については、「 SqlPackage 抽出」を参照してください。

新しいオブジェクトを作成する

プロジェクト フォルダーに .sql ファイルを作成して、新しいデータベース オブジェクトをプロジェクトに追加します。 各ファイルには、1 つのデータベース オブジェクトに対して 1 つの CREATE ステートメントを含める必要があります。 たとえば、テーブル定義は次のようになります。

CREATE TABLE [dbo].[Products]
(
    [ProductId] INT NOT NULL PRIMARY KEY,
    [ProductName] NVARCHAR (100) NOT NULL,
    [Price] DECIMAL (10, 2) NOT NULL
);

dbo/TablesSales/StoredProceduresなどのサブフォルダーを使用して、スキーマとオブジェクトの種類別にファイルを整理します。 この構造は、SqlPackage 抽出の出力と一致し、プロジェクトの拡大に合わせてオブジェクトを見つけやすくなります。 SQL プロジェクトのビルド プロセスには、既定でプロジェクト フォルダーとそのサブフォルダー内のすべての .sql ファイルが含まれます。

SSMS には、作業の開始に役立つ一般的な項目のテンプレートが用意されています。 新しい項目を追加するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[ 追加>新しい項目] を選択し、SQL オブジェクト テンプレートの一覧から選択します。

既存のプロジェクトを開く

SSMS で既存の SQL データベース プロジェクトを開くには、[ ファイル>開く>プロジェクト/ソリューション ] を選択し、 .sqlproj ファイルに移動します。

Important

SSMS では、SDK スタイルの Microsoft.Build.Sql プロジェクトのみがサポートされます。 サポートされている SDK の最小バージョンは 2.1.0 です。 Visual Studio で作成された元の SQL プロジェクトがある場合は、開く前に SDK スタイルの形式に変換する必要があります。

元の SQL プロジェクトを SDK スタイルの形式に変換する方法については、「 元の SQL プロジェクトを SDK スタイルのプロジェクトに変換する」を参照してください。

プロジェクトをビルドして変更をデプロイする

SQL プロジェクト ワークフローは、スキーマを検証してコンパイルするプロジェクトをビルドし、コンパイルされた出力をターゲット データベースに配置する 2 つの主要な手順で構成されています。

プロジェクトのビルド

SQL プロジェクトをビルドすると、オブジェクト間の関係が検証され、指定されたターゲット プラットフォームに対して T-SQL 構文がチェックされます。 ビルド プロセスでは、データベース スキーマのコンパイル済みモデルを含む .dacpac ファイルが生成されます。

SSMS でプロジェクトをビルドするには、ソリューション エクスプローラーでプロジェクトを右クリックし、[ ビルド] を選択します。

SQL プロジェクトのビルド オプションを示すソリューション エクスプローラーのスクリーンショット。

ビルド出力には、エラーまたは警告が表示されます。 エラーは、存在しないテーブルを参照するビューなど、デプロイを妨げる問題を示します。 警告では、オブジェクト名の大文字と小文字の区別に一貫性がないなどの潜在的な問題が強調表示されます。

ビルドが正常に完了すると、プロジェクト ディレクトリ内の .dacpac フォルダーにbin\Debug ファイルが作成されます。

ビルドの問題のトラブルシューティングの詳細については、「 SQL プロジェクトのビルド エラーのトラブルシューティング」を参照してください。

変更をデプロイする

プロジェクトをビルドしたら、SSMS の [発行] ダイアログを使用して、 .dacpac をターゲット データベースにデプロイします。 配置プロセスは、 .dacpac をターゲット データベースと比較し、データベースをプロジェクトと同期するために必要な CREATEALTER、または DROP ステートメントを生成します。

配置するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[発行] を選択 します。 [発行] ダイアログで、ターゲット データベース接続を構成し、[ 発行 ] を選択して変更を適用するか 、スクリプトを生成 して実行前にデプロイ スクリプトを確認します。

SQL データベース プロジェクトの変更をデプロイするための [発行] ダイアログのスクリーンショット。

発行プロセスはべき等であるため、問題を発生させずに同じ .dacpac を複数回デプロイできます。 この方法では、同じコンパイル済み成果物を使用して、複数の環境 (開発、ステージング、運用) にデプロイできます。

デプロイ オプションと構成の詳細については、「 SQL データベース プロジェクトの概要」を参照してください。