SQL プロジェクト ツール
SQL プロジェクトのツールは、いくつかの開発環境とコマンド ライン インターフェイスで使用できます。 SQL プロジェクトの主なツールは、SqlPackage コマンド ライン ユーティリティ、Visual Studio の SQL Server Data Tools (SSDT)、Azure Data Studio と Visual Studio Code 用の SQL Database プロジェクトの拡張機能です。
グラフィカル ツール
これらのツールは、SQL プロジェクト、T-SQL エディター、ビルドおよび発行プロセスのグラフィカル インターフェイスを提供します。
SQL Server Data Tools (SSDT) は、SQL プロジェクトのグラフィカル インターフェイスを提供する Visual Studio コンポーネントです。 SSDT には、テーブル用のビジュアル デザイナー、T-SQL エディター、ビルドおよび発行プロセスが用意されています。
SQL Database プロジェクトの拡張機能は、Azure Data Studio (ADS) と VS Code 用の拡張機能です。 この拡張機能は、SQL プロジェクト、T-SQL エディター、ビルドおよび発行プロセスのグラフィカル インターフェイスを提供します。
機能セットの比較
機能 | SDK スタイルの SSDT | SSDT | ADS | VS Code |
---|---|---|---|---|
新しい空のプロジェクトを作成する | x | X | X | x |
既存のデータベースから新しいプロジェクトを作成する | x | X | x | |
既存の Microsoft.Build.Sql プロジェクトを開く | X1 | X | x | |
ソリューションの管理と操作 | x | x | ||
プロジェクトの実行ビルド | x | X | X | x |
プロジェクトを既存のサーバーに発行する | x | X | X | x |
プロジェクトをローカル開発インスタンスに発行する | X2 | X2 | X3 | X3 |
発行オプション/プロパティ | x | X | x | |
ターゲット プラットフォームを更新できる | x | X | X | x |
SQLCMD 変数 | x | X | X | x |
プロジェクト参照 | x | x | ||
Dacpac 参照 | x | X | x | |
パッケージ参照 | x | |||
発行プロファイルの作成 | x | X | x | |
SQL ファイルはプロジェクト フォルダーに配置すると追加できる | x | X | x | |
SQL ファイルをビルドから除外できる | x | x | ||
配置前/配置後スクリプト | x | X | X | x |
新しいオブジェクト テンプレート | X4 | x | X4 | X4 |
プロジェクト ファイルをフォルダーに整理できる | x | X | X | x |
スキーマ比較プロジェクトからデータベースへ | x | x | ||
スキーマ比較データベースからプロジェクトへ | x | x | ||
グラフィカル テーブル デザイナー | x | x | ||
コード分析 - ルールの有効化/無効化 | x | |||
プロジェクト プロパティ - ビルド出力の設定 | x | x | ||
プロジェクト プロパティ - 既定のスキーマ | x | |||
プロジェクト プロパティ - データベースの設定 | x | |||
プロジェクトのコード分析をスタンドアロンで実行 | x | |||
オブジェクトの名前変更とリファクタリング | x | |||
Intellisense がプロジェクト モデルのデータベース ファイルに提供される | x | |||
SQL Server オブジェクト エクスプローラーの接続/ビュー オブジェクト | x | X | X | x |
SQL Server オブジェクト エクスプローラーのコンテキスト メニュー項目 | x | X | x | |
SQL Server クエリ エディターの接続 | x | X | x |
- Visual Studio 2022 プレビュー 2 では、SDK スタイルのプロジェクトでは、従来の
.sqlproj
拡張子の代わりに.sqlprojx
拡張子を使用します。 - ローカル開発インスタンスは、SQL Server LocalDB インスタンスです。
- ローカル開発インスタンスは SQL Server コンテナーです。
- 使用できるテンプレートのサブセットは限定されています
コマンド ライン ツール
SqlPackage は DacFx ライブラリの主要なコマンド ライン ユーティリティであり、.dacpac
をデータベースにデプロイしたり、データベースのオブジェクトを SQL プロジェクトや .dacpac
に抽出したりするなどのデータべース開発タスクの自動化を可能にします。
DacFx .NET ライブラリを使用してカスタム コンソール アプリケーションを構築し、データベース開発タスクを自動化できます。 Microsoft.SqlServer.Dac 名前空間には、データベース オブジェクトを作成、デプロイ、および抽出するためのクラスが含まれており、DacFx ライブラリの残りの部分の基礎となります。
CI/CD パイプラインは、コマンド ラインの実行、または .dacpac
および SQL プロジェクトのデプロイに固有のタスクを使用して構築できます。 タスクの例としては GitHub sql-action や Azure DevOps の SqlAzureDacpacDeployment が挙げられますが、これらのタスクでは管理レイヤーの下にある SqlPackage が使用されるため、データベースの変更のデプロイが容易になります。
サードパーティ製のツール
SQL プロジェクトとデータベースのデプロイに関連する機能を提供するサード パーティ製のツールを使用できます。 dbatools など、一部のツールはオープンソースです。
開発者は、SQL プロジェクトに関する拡張ポイントを活用して、コード分析や展開プランのカスタマイズなど、さまざまなプロジェクトを共有しています。 これらのプロジェクトの一部を次に示します。
- https://github.com/tcartwright/SqlServer.Rules
- https://github.com/davebally/TSQL-Smells
- https://github.com/GoEddie/DeploymentContributorFilterer