SQL Server ベースの環境を操作するためには SQL Server Management Studio (SSMS) を使用することができますが、そのほかにも Microsoft からいくつかのツールが提供されています。
ここ数か月で MS が提供している SQL Server ベースの環境を操作するためのツールについて、いくつかのアナウンスがありましたので一度まとめておきたいと思います。
Contents
Azure Data Studio の廃止
冒頭に記載した SSMS は Windows 専用のツールとなっています。(最新の SSMS 21 Preview は、私が試したときは Windows on ARM ではインストールが出来なかったのですが、SSMS 20 であれば Windows on ARM にもインストールできました)
Windows 以外で GUI で SQL Server ベースの操作を行うためのツールとして Azure Data Studio (ADS) が提供されていますが、「2026/02/28」に ADS の提供終了がアナウンスされました。
- Retirement: Transition from Azure Data Studio to VIsual Studio Code
- Azure Data Studio はどうなっていますか?
- Azure Data Studio Retirement
後継機能は Azure Data Studio の SQL Server 機能に推奨される代替手段 に記載されていますが、SSMS や Visual Studio Code の MSSQL 拡張機能 (vscode-mssql) となっています。
マルチプラットフォームで動作する Azure Data Studio で使用できていた一部の機能の代替に SSMS をマッピングするのはいかがなものかという気がしてなりませんが…。
Azure Data Studio Retirement のコメントで、代替機能や懸念点についてのディスカッションが行われており、この内容は参考となります。
基本機能の代替としては VS Code の MSSQL 拡張機能となりますが、現状公開されている情報では、ADS と比較してサポートされる機能 / GUI の不足が取り沙汰されることが多い気がしています。
ADS が廃止されるまではまだ期間があり、azuredatastudio の更新も継続されていますが、ADS を使用している場合には今後の動向は気にしておく必要があります。
VS Code の SQL Server 拡張機能については、直近で次のアナウンスがあり、強化された機能が紹介されています。
ロードマップ についても公開されていますので、今後どのような機能拡張が発生するのかはこの情報を確認するとよさそうですね。
Data Migration Assistan が非推奨
SQL Server ベースの環境のアップグレード / クラウドマイグレーションに使用する際のツールとして Data Migration Assistant (DMA) がありますが、2024/06 付近で、DMA は非推奨機能となりました。
2024/06 付近の情報をベースとした SQL Server 2022 / Azure SQL Database / Azure SQL Managed Instance への以降であれば DMA を使用することはできますが、DMA では最新のルールは含まれていない可能性を考慮する必要があります。
後継の機能は SSMS 21 に搭載される予定となっており、次のアナウンスが行われました。
投稿を書いている時点の最新の SSMS 21 である 21.0 Preview 4.0 日本語版の段階ではまだ機能は実装されていませんが、今後 DMA で実施していた内容は SSMS に統合されるようです。
現在公開されている情報から確認できる UI としては DMA と同様となっているように見えるので、DMA と同様に
- 移行元から評価用に dacpac を生成してアップグレードの調査
- Azure SQL Database への移行用にスキーマ生成スクリプトの出力と Bulk Insert によるデータのコピー
DMA では スクリプトや拡張イベントを使用したクエリの評価 という機能が含まれているのですが、現時点で公開されている情報ではこの機能も継続して使用できるのかは把握することはできませんでした。
Azure へのデータベース移行のドキュメントとしては 移行の概要: SQL Server から がありますが移行については、DMA ではなく、Azure SQL Migration 拡張機能 を使用した以降が記載されています。
この拡張機能は ADS 用のものであり、ADS も廃止が決まっていますので、今後、マイグレーションについてのドキュメントは大きく書き換わる可能性があるのではないでしょうか。
SQLCMD の Go バージョン
SQL Server ベースの環境に CLI で接続する場合には sqlcmd ユーティリティ を使用します。
sqlcmd は今は次の 3 種類が提供されています。
- Windows 版 sqlcmd
- Linux 版 sqlcmd
- mssql-tools に含まれる
- Go Lang 版 slqcmd
どちらも sqlcmd というツールになるので少しややこしいのですが、現時点ではこの 3 種類が提供されています。
SQL Server on Linux / SQL Server on Docker で動作する SQL Server は Windows と同じバイナリを使用するようになっているので、データベースエンジンについては Windows と Linux ベースの環境では互換性のある動作が行われています。
しかし、sqlcmd については go-sqlcmd が出る前は、それぞれのプラットフォーム用に作成された sqlcmd が提供されているという状態となっており、挙動にいくつかの差がありました。
Go Lang 版の sqlcmd (go-sqlcmd) が提供されたことで、プラットフォームの差はかなり少なく相互に互換性のある CLI が提供されたことになります。
go-sqlcmd は従来の sqlcmd と操作性に差があるので、そこは利用者が吸収しないといけないところではありますが。
今のところ go-sqlcmd に一本化されるという話を見かけではいないので、当面は従来のものと go-sqlcmd の両方が提供されるかと思います。
SQL Server PowerShell モジュール
SQL Server を操作するための PowerShell モジュールとして、当初は SQLPS が提供されていますが、最新は Install SQL Server PowerShell module にも記載されている「SqlServer」モジュールとなります。
SqlServer モジュール は Microsoft.Data.SqlClient / Microsoft.SqlServer.Smo 等も含まれていおり、ライブラリのバージョンもそれなりに新しいものが入っています。
SQL Server の操作をする PowerShell スクリプトをライブラリを直接使用して記述する際にも便利ですので、SQL Server の操作用スクリプトを作成する際にはこのモジュールの導入を前提として作成してみてもよいのではないでしょうか。(Add-Type で関連するライブラリをロードしていくより楽です)