SQL Server Management Studio (SSMS) を使用するために、実施している設定のカスタマイズについてまとめておきたいと思います。
気づいたときにいろいろと追記していこうかと。
Contents
- 1 SSMS の設定変更
- 1.1 「テキスト エディター」→「全ての言語」の「行番号」を有効化し、テキスト内に行番号を表示
- 1.2 「テキスト エディター」→「エディターのタブとステータス バー」の「タブのテキスト」をカスタマイズ
- 1.3 「テキスト エディター」→「エディターのタブとステータス バー」の「ステータスバーの場所」を変更
- 1.4 「クエリ結果」→「SQL Server」→「結果をグリッドに表示」をカスタマイズ
- 1.5 「クエリ結果」→「SQL Server」→「結果をグリッドに表示」→「実行後に結果を破棄する」を目的に応じて変更
- 1.6 ダークテーマの設定
- 1.7 恒常的には変えていないその他の設定
- 1.8 テーブルデザイナー向けのレジストリ変更
- 1.9 登録済みサーバーの利用
- 2 アドインの追加
SSMS の設定変更
SSMS では次のような設定変更を実施するようにしています。
スペースの表示
クエリエディタを選択 (フォーカスを当てた) した状態で、「編集」→「詳細」を選択すると、次のようなメニューが表示されます。
(クエリエディタを選択していないと表示される項目が異なります)
このメニューから「スペースの表示」を有効にするとクエリエディタ内のテキストにスペースが表示されるようになります。
SSMS のオプション設定
SSMS の「ツール」→ 「オプション」では次のような設定を変更しています。
「テキスト エディター」→「全ての言語」の「行番号」を有効化し、テキスト内に行番号を表示
この設定を有効化することで、テキストエディターに行番号が表示されるようになりますので、クエリを書いているときの視認性やエラーが出たときの行番号把握が楽になるかと。
「テキスト エディター」→「エディターのタブとステータス バー」の「タブのテキスト」をカスタマイズ
SSMS は複数タブのエディターですが、デフォルトの設定ではタブに表示される内容は「ファイル名 – サーバー名.DB名 (ログイン名 (セッション ID))」という形式になっています。
複数のインスタンスに接続をしながら作業をしていると、複数のタブを開くことになりますが、その場合はこの形式ですと、どのインスタンスに対して接続をしているかの視認性が低下することがあります。
タブの表示内容は「タブのテキスト」の項目で変更することができますので、私の場合はサーバー名 / データベース名のみを表示するようにしています。
表示内容をカスタマイズすると、複数のタブを表示しても表示内容はシンプルになります。
この設定にすると、タブに Session Id が表示されなくなるため、Session Id はステータスバーか確認する必要が出てくるので、一長一短はあるかと思います。
「テキスト エディター」→「エディターのタブとステータス バー」の「ステータスバーの場所」を変更
タブの表示内容した場合、ログイン名やセッション ID は「ステータスバー」に表示される内容から判断する必要が出てきます。
デフォルトのステータスバーはエディターの下の部分に表示されますので、タブに表示される情報を制限した場合ステータスバーの情報からログインやセッション ID の情報を確認する必要があります。
ステータスバーの表示場所については上下のいずれかを選択することができますので、私の場合は上になるようにしています。
タブに表示されている内容を減らしたことについては、タブの下のステータスバーを見ることで、代替できるようになるかと。
「クエリ結果」→「SQL Server」→「結果をグリッドに表示」をカスタマイズ
SSMS でクエリの実行を行った際の実行結果の表示は「グリッド表示」を標準として使用しています。
私の場合は SQL Server の各種情報を確認する際に SSMS でクエリを実行して分析を行うのですが、分析する情報の中には「クエリのテキスト情報」もあります。
デフォルトの設定でグリッド表示を使用していると、
- グリッドに表示されているクエリのテキストをコピー & ペースト (コピペ) すると改行が失われる
(キャッシュされているクエリやクエリストアで確認したテキスト情報の再利用時に困る) - テキストが途中までしか表示されない
というようなことがありますので次の設定を変更しています。
- 「コピーまたは保存に CR/LF を保持」を有効化
- 「XML 以外のデータ」を「65535」(デフォルト) から「2097152」(最大値) に変更
「クエリ結果」→「SQL Server」→「結果をグリッドに表示」→「実行後に結果を破棄する」を目的に応じて変更
クエリのテストを実行する際に、大量のデータを取得するようなクエリを SSMS で実行した場合は、クエリの実行結果の受信と描画で実行に時間がかかるケースがあります。
クエリ単体の性能を計測するときには、これらのクライアントのオーバーヘッドが分析を行う際のノイズになる? (もちろん、クライアントの描画を含めて計測をする必要もありますので、ノイズにはならないケースということもあります) ことがありますので、クエリアント側のオーバーヘッドを抑えたい場合は「実行後に結果を破棄する」を有効にしてクエリのテストを実施することがあります。
(変数に実行結果を入れることで、クライアントの描画を抑えるというパターンもありますが)
ダークテーマの設定
私は標準の配色で慣れてしまっているので、変更することはないのですが、Visual Studio をメインに使っている方だと、ダークテーマの方が使いやすいということもあるのではないでしょうか。
SSMS も「環境」→「全般」→「配色テーマ」から、「ダークテーマ (濃色)」 を選択することができます。
標準では選択することはできないのですが、Setting up the dark theme in SQL Server Management Studio で解説されているように、「SSMS.exe」が格納されているディレクトリ内にある「ssms.pkgundef」を編集し、「Remove Dark theme」のコメントが書かれている設定をコメント化すると配色テーマから選択することができるようになります。
SSMS をアップグレードすると初期化され表示されなくなりますので、常に使っていたい場合は少し面倒ですが、設定としては選択肢に追加することはできます。
恒常的には変えていないその他の設定
常に設定を変えているわけではないのですが、ケースに応じては次のような設定を変更することもあります。
SSMS で「上位 1000 行の選択」や「上位 200 行の編集」といった操作の、データ上限についても変更できます。
これらの設定は「SQL Server オブジェクト エクスプローラー」の設定で変更可能です。
他にもテーブルデザイナーでテーブルの再作成を伴う変更をした場合に実行を可能とする「デザイナー」→「テーブル デザイナーおよびデータベース デザイナー」の「テーブルの再作成を必要とする変更を保存できないようにする」 (デフォルトは有効なので、変更できるようにするには無効化する) の設定変更を行うこともあるかと。
(検証環境でサクッと設定変更したい場合以外は使わない方が良いですが)
テーブルデザイナー向けのレジストリ変更
私はあまり変えることはないのですが、SSMS のテーブルデザイナーのカスタマイズについては、How do I add the description property to the table designer view in SSMS? で紹介されているレジストリを変更することで、カスタマイズすることができます。
登録済みサーバーの利用
SSMS でサーバーに接続をする際に、毎回認証情報を入力するのは手間ですので、「登録済みサーバー」の機能を活用します。
登録済みサーバーでは次のような機能を使用することができます。
- 接続先サーバーの情報の登録
- 資格情報の接続時のステータスバーの色の設定等も記録可能
- 登録済みサーバーの特定のグループにまとめてクエリを実行
接続サーバーの情報の登録を行う際には、「接続プロパティ」で「カスタム色を使用」という設定を行うことができます。
この設定を使用するとステータスバーに設定した色の情報が反映されますので、サーバーに応じて色を変更しておくと、どのサーバーに接続をしているかをステータスバーの色から判断することができます。
(タブの色を環境によって変更したい場合は、アドインに記載している ApexSQL Complete を使用することで対応できます)
また、登録済みサーバーでは「サーバー グループ」を作成することができ、サーバーグループに対して「新しいクエリ」を実行することで、グループ内の SQL Server のインスタンス内に同一のクエリを実行することができます。
複数のインスタンスから情報を取得したい場合はこの機能が便利です。
アドインの追加
様々なベンダーから SSMS 向けのアドインが提供されています。
どのようなアドインが公開されているかは、SQL Server Management Studio add-ins がとてもまとまっています。
他にも、Best SQL Tools for Database Developers and Administrators でも情報が公開されていますので、SSMS の利便性を向上させるツールについては、これらの情報を確認すると良いのではないでしょうか。
私が使用しているものとしては、次のアドインでしょうか。
(SSMS を実行する環境がいろいろとあるので、アドインを活用しているとは言えない状況なのですよね…。)
SentryOne Plan Explorer
ドキュメント : Plan Explorer Installation & Overview
SSMS 単体でもクエリの実行プランを確認することができますが、このプランをさらに詳細に分析することができます。
単体のツールとして起動することもできるのですが、SSMS のアドインとして追加されていますので、実行プランを表示した際に、右クリックのメニューの「View with SentryOne Plan Explorer」を選択できるようになります。
これで、該当の実行プランを Plan Explorer で分析することができます。
ApexSQL Refactor
ドキュメント : ApexSQL Refactor knowledgebase ? Table of contents
Visual Studio Code や、Azure Data Studio で SQL のフォーマッターを使用することができますが、ApexSQL Refactor をインストールすると SSMS (または、Visual Studio) のアドインとして、SQL のフォーマッターを組み込むことができます。
メニューバー / ツールバー / 右クリックメニューから、簡単に呼び出すことができます。
(フォーマットが動作しない場合は新しいクエリウィンドウにクエリをコピーしてから、再度実行すると正常に動作するときがあります)
他にもワイルドカード 「*」を展開する Wildcard expansion 等もありますので、項目の展開を行うこともできます。
ApexSQL Complete
ドキュメント : ApexSQL Complete knowledgebase ? Table of contents
入力補完の強化やステートメント単位の実行のような機能が追加され、SSMS のクエリエディタが強化されます。
SSMS の標準機能ですと、ステータスバーの色を環境によって変更することはできますが、その色をタブの色として使うところまではできなかったと思います。
SQL Complete を使用すると、環境に応じたタブの色指定もできるようになりますのでさらに視認性を向上させることができるかと。