SQL プロジェクトのツールは、いくつかの開発環境とコマンド ライン インターフェイスで使用できます。 SQL プロジェクトの主なツールは、 SqlPackage コマンド ライン ユーティリティ、Visual Studio の SQL Server Data Tools (SSDT)、および Visual Studio Code 用 の SQL Database Projects 拡張機能 です。
この記事に含まれるツール:
グラフィカル ツール
これらのツールは、SQL プロジェクト、T-SQL エディター、ビルドおよび発行プロセスのグラフィカル インターフェイスを提供します。
SQL Database Projects 拡張機能 は、 Visual Studio Code の拡張機能です。 この拡張機能は、SQL プロジェクト、T-SQL エディター、ビルドおよび発行プロセスのグラフィカル インターフェイスを提供します。
SQL Server Management Studio (SSMS) の Database DevOps には、SQL プロジェクト用のグラフィカル インターフェイス、T-SQL エディター、ビルドおよび発行プロセスが用意されています。
SQL Server Data Tools (SSDT) は、SQL プロジェクトのグラフィカル インターフェイスを提供する Visual Studio コンポーネントです。 SSDT には、テーブル用のビジュアル デザイナー、T-SQL エディター、ビルドおよび発行プロセスが用意されています。
機能セットの比較
| 機能 | VS Code | SSMS | SSDT (VS2022-2026) | SDK スタイルの SSDT、プレビュー (VS2022) |
|---|---|---|---|---|
| 新しい空のプロジェクトを作成する | イエス | イエス | イエス | イエス |
| 既存のデータベースから新しいプロジェクトを作成する | イエス | イエス | イエス | イエス |
| 既存の Microsoft.Build.Sql プロジェクトを開く | イエス | イエス | いいえ | イエス |
| SSDT 標準形式のプロジェクトを開く | イエス | いいえ | イエス | いいえ |
| ソリューションの管理と操作 | いいえ | イエス | イエス | イエス |
| プロジェクトの実行ビルド | イエス | イエス | イエス | イエス |
| プロジェクトを既存のサーバーに発行する | イエス | イエス | イエス | イエス |
| プロジェクトをローカル開発インスタンスに発行する | Yes1 | はい2 | はい3 | はい3 |
| 発行オプション/プロパティ | イエス | いいえ | イエス | イエス |
| ターゲット プラットフォームを更新できる | イエス | イエス | イエス | イエス |
| SQLCMD 変数 | イエス | イエス | イエス | イエス |
| プロジェクト参照 | イエス | イエス | イエス | イエス |
| DACPAC 参照 | イエス | イエス | イエス | イエス |
| パッケージ参照 | イエス | イエス | いいえ | いいえ |
| 発行プロファイル作成 | イエス | イエス | イエス | イエス |
| SQL ファイルはプロジェクト フォルダーに配置すると追加できる | イエス | イエス | いいえ | イエス |
| SQL ファイルをビルドから除外できる | イエス | イエス | イエス | いいえ |
| デプロイ前と配置後のスクリプト | イエス | イエス | イエス | イエス |
| 新しいオブジェクト テンプレート | はい4 | はい4 | イエス | はい4 |
| プロジェクト ファイルをフォルダーに整理できる | イエス | イエス | イエス | イエス |
| スキーマ比較プロジェクトからデータベースへ | イエス | いいえ | イエス | イエス |
| スキーマ比較データベースからプロジェクトへ | イエス | いいえ | イエス | いいえ |
| グラフィカル テーブル デザイナー | いいえ | いいえ | イエス | イエス |
| コード分析 - ルール GUI の有効化/無効化 | イエス | イエス | イエス | いいえ |
| プロジェクトのプロパティ - ビルド出力の設定 | いいえ | いいえ | イエス | イエス |
| プロジェクトのプロパティ - データベース設定 GUI | いいえ | いいえ | イエス | いいえ |
| プロジェクト実行 コード分析 | イエス | イエス | イエス | いいえ |
| オブジェクトの名前変更とリファクタリング | いいえ | いいえ | イエス | いいえ |
| プロジェクトモデルからのデータベースファイルに Intellisense が提供されます | いいえ | いいえ | イエス | いいえ |
- ローカル開発インスタンスは SQL Server コンテナーです。
- インストール済みの Microsoft SQL データベースは、ローカル開発インスタンスとして使用できます。
- ローカル開発インスタンスは、SQL Server LocalDB インスタンスです。
- 使用できるテンプレートのサブセットは限定されています
コマンド ライン ツール
SqlPackage は DacFx ライブラリの主要なコマンド ライン ユーティリティであり、.dacpac をデータベースにデプロイしたり、データベースのオブジェクトを SQL プロジェクトや .dacpac に抽出したりするなどのデータべース開発タスクの自動化を可能にします。
DacFx .NET ライブラリを使用してカスタム コンソール アプリケーションを構築し、データベース開発タスクを自動化できます。 Microsoft.SqlServer.Dac 名前空間には、データベース オブジェクトを作成、デプロイ、および抽出するためのクラスが含まれており、DacFx ライブラリの残りの部分の基礎となります。
CI/CD パイプラインは、コマンド ラインの実行、または .dacpac および SQL プロジェクトのデプロイに固有のタスクを使用して構築できます。 タスクの例としては GitHub sql-action や Azure DevOps の SqlAzureDacpacDeployment が挙げられますが、これらのタスクでは管理レイヤーの下にある SqlPackage が使用されるため、データベースの変更のデプロイが容易になります。
変換ツール
既存の SQL プロジェクトを SDK スタイルのプロジェクトに変換するプロセスは、新しい SDK スタイルのプロジェクト形式を含むように.sqlproj ファイルを手動で編集することによって行われます。 プロセスを開始する前に、プロジェクト ファイルをバックアップし、プロジェクトの .dacpac をアーカイブすることをお勧めします。 プロジェクトからビルドされた "before" と "after" .dacpac を比較することで、変換プロセスが正しく完了していることを確認できます。
プロジェクト/ソリューション管理
複数の SQL プロジェクト (およびその他のプロジェクト) をソリューション ファイルに論理的にグループ化できます。 ソリューション ファイルは 1 つ以上のプロジェクトのコンテナーであり、ビルド アクションを含むグループとしてプロジェクトを管理するために使用されます。 大規模なソリューションを小さなソリューションに分割してパフォーマンスと管理性を向上させたり、手元の適切なタスクに合わせて動的に生成したりできます。 slngen ソリューション ファイル ジェネレーターは Microsoft.Build.Sql プロジェクトで使用でき、プログラムとオンデマンドで一連のプロジェクトのソリューション ファイルを作成するために使用できます。
ロードマップ
SQL プロジェクト関連の機能に関する四半期ごとのロードマップは、https://aka.ms/sqlprojects-roadmapで利用できます。 お客様からのフィードバックはロードマップに大きく影響します。このロードマップには、Microsoft.Build.Sql プロジェクトの機能の最新化と、SQL プロジェクトに関連付けられているツール サーフェイスの改善の両方が組み込まれています。
サードパーティ製のツール
SQL プロジェクトとデータベースのデプロイに関連する機能を提供するサード パーティ製のツールを使用できます。 dbatools など、一部のツールはオープンソースです。
開発者は、SQL プロジェクトに関する拡張ポイントを活用して、コード分析や展開プランのカスタマイズなど、さまざまなプロジェクトを共有しています。 これらのプロジェクトの一部を次に示します。
- https://github.com/tcartwright/SqlServer.Rules
- https://github.com/davebally/TSQL-Smells
- https://github.com/ErikEJ/SqlServer.Rules
- https://github.com/GoEddie/DeploymentContributorFilterer