SQL プロジェクトのツールは、いくつかの開発環境とコマンド ライン インターフェイスで使用できます。 SQL プロジェクトの主なツールは、SqlPackage コマンド ライン ユーティリティ、Visual Studio の SQL Server Data Tools (SSDT)、および Visual Studio Code の SQL データベース プロジェクト拡張機能です。
この記事に含まれるツール:
グラフィカル ツール
これらのツールは、SQL プロジェクトのグラフィカル インターフェイス、Transact-SQL (T-SQL) エディター、ビルドおよび発行プロセスを提供します。
SQL データベース プロジェクト拡張機能 は、Visual Studio Code の拡張機能です。 この拡張機能は、SQL プロジェクト、T-SQL エディター、ビルドおよび発行プロセスのグラフィカル インターフェイスを提供します。
database DevOpsSQL Server Management Studio (SSMS) では、SQL プロジェクトのグラフィカル インターフェイス、T-SQL エディター、ビルドおよび発行プロセスが提供されます。
SQL Server Data Tools (SSDT) は、SQL プロジェクトのグラフィカル インターフェイスを提供する Visual Studio コンポーネントです。 SSDT には、テーブル用のビジュアル デザイナー、T-SQL エディター、ビルドおよび発行プロセスが用意されています。
機能セットの比較
| 機能 | Visual Studio Code | SSMS | SSDT (VS2022-2026) | SDK スタイルの SSDT (プレビュー) (VS2022) |
|---|---|---|---|---|
| 新しい空のプロジェクトを作成する | イエス | イエス | イエス | イエス |
| 既存のデータベースから新しいプロジェクトを作成する | イエス | イエス | イエス | イエス |
| 既存のMicrosoft.Build.Sqlプロジェクトを開く | イエス | イエス | いいえ | イエス |
| SSDT 標準形式のプロジェクトを開く | イエス | いいえ | イエス | いいえ |
| ソリューションの管理と操作 | いいえ | イエス | イエス | イエス |
| プロジェクトのビルドを実行する | イエス | イエス | イエス | イエス |
| プロジェクトを既存のサーバーに発行する | イエス | イエス | イエス | イエス |
| プロジェクトをローカル開発インスタンスに発行する | Yes1 | はい2 | はい3 | はい3 |
| 発行オプション/プロパティ | イエス | イエス | イエス | イエス |
| ターゲット プラットフォームを更新できる | イエス | イエス | イエス | イエス |
| SQLCMD 変数 | イエス | イエス | イエス | イエス |
| プロジェクト参照 | イエス | イエス | イエス | イエス |
| DACPAC 参照 | イエス | イエス | イエス | イエス |
| パッケージ参照 | イエス | イエス | いいえ | いいえ |
| 発行プロファイル作成 | イエス | いいえ | イエス | イエス |
| SQL ファイルはプロジェクト フォルダーに配置すると追加できる | イエス | イエス | いいえ | イエス |
| SQL ファイルをビルドから除外できる | イエス | イエス | イエス | いいえ |
| デプロイ前と配置後のスクリプト | イエス | イエス | イエス | イエス |
| 新しいオブジェクト テンプレート | はい4 | イエス | イエス | はい4 |
| Projectファイルはフォルダーに整理できます | イエス | イエス | イエス | イエス |
| スキーマ比較プロジェクトからデータベースへ | イエス | いいえ | イエス | イエス |
| スキーマ比較データベースからプロジェクトへ | イエス | いいえ | イエス | いいえ |
| グラフィカル テーブル デザイナー | いいえ | いいえ | イエス | イエス |
| コード分析 - ルール GUI の有効化/無効化 | イエス | イエス | イエス | いいえ |
| プロジェクトのプロパティ - ビルドアウトプット設定 | いいえ | いいえ | イエス | イエス |
| プロジェクトプロパティ - データベース設定 GUI | いいえ | いいえ | イエス | いいえ |
| プロジェクト実行コード分析 | イエス | イエス | イエス | いいえ |
| オブジェクトの名前変更とリファクタリング | いいえ | いいえ | イエス | いいえ |
| プロジェクトモデルからのデータベースファイルに Intellisense が提供されます | いいえ | いいえ | イエス | いいえ |
1 ローカル開発インスタンスはSQL Server コンテナーです。
2 Microsoft SQL データベースにプレインストールされているものがある場合は、ローカル開発インスタンスとして使用できます。
3 ローカル開発インスタンスは、SQL Server LocalDB インスタンスです。
4 利用可能なテンプレートの限定されたサブセット。
コマンド ライン ツール
SqlPackage は DacFx ライブラリの主要なコマンド ライン ユーティリティであり、.dacpac をデータベースにデプロイしたり、データベースのオブジェクトを SQL プロジェクトや .dacpac に抽出したりするなどのデータべース開発タスクの自動化を可能にします。
DacFx .NET ライブラリを使用してカスタム コンソール アプリケーションを構築し、データベース開発タスクを自動化できます。 Microsoft。SqlServer.Dac 名前空間には、データベース オブジェクトを作成、配置、および抽出するためのクラスが含まれており、DacFx ライブラリの残りの部分の基礎となります。
CI/CD パイプラインは、コマンド ラインの実行、または .dacpac および SQL プロジェクトのデプロイに固有のタスクを使用して構築できます。
GitHub sql-action と SqlAzureDacpacDeployment in Azure DevOps は、データベースの変更のデプロイを容易にするために管理層の下で SqlPackage を使用するタスクの例です。
変換ツール
既存の SQL プロジェクトを SDK スタイルのプロジェクトに変換するプロセスは、新しい SDK スタイルのプロジェクト形式を含むように.sqlproj ファイルを手動で編集することによって行われます。 プロセスを開始する前に、プロジェクト ファイルをバックアップし、プロジェクトの .dacpac をアーカイブすることをお勧めします。 プロジェクトからビルドされた "before" と "after" .dacpac を比較することで、変換プロセスが正しく完了していることを確認できます。
プロジェクト/ソリューション管理
複数の SQL プロジェクト (およびその他のプロジェクト) をソリューション ファイルに論理的にグループ化できます。 ソリューション ファイルは 1 つ以上のプロジェクトのコンテナーであり、ビルド アクションを含むグループとしてプロジェクトを管理するために使用されます。 大規模なソリューションを小さなソリューションに分割してパフォーマンスと管理性を向上させたり、手元の適切なタスクに合わせて動的に生成したりできます。 Microsoft.Build.Sql プロジェクト用のslngen ソリューションファイルジェネレーターは、プログラム上およびオンデマンドで一連のプロジェクトのソリューションファイルを生成するために使用できます。
ロードマップ
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