web-dev-qa-db-ja.com

SSMS 2012でのT-SQLのフォーマット

このマイクロソフトのドキュメントによると:

http://msdn.Microsoft.com/en-us/library/ms174205.aspx

SQL Server Management Studio 2012でctrl + K、次にctrl + Dを使用してSQLドキュメントをフォーマットできるはずですが、そのコンボを使用するとエラーが発生します。

キーの組み合わせ(Ctrl + K、Ctrl + D)は、現在利用できないコマンド(Format Document)にバインドされています。

まったく書式設定されていない既存のSQLドキュメントに変更を加えようとしているため、非常に読みにくくなっています。 「ドキュメントのフォーマット」コマンドを使用可能にして、SQLでこのコードをフォーマットできるようにする方法を知っている人はいますか?

39
user11512

あなたが求めているキーボードの組み合わせ(Ctrl+K、 Ctrl+D)は「フォーマット」用ですが、期待したようには見えません。これは見栄えのするものではなく、Tools > Options > Text Editor > Transact-SQL > General/Tabsのように正しい間隔とタブを挿入するために使用されるだけなので、テキストの一部をハイライト表示してキーボードの組み合わせを押すと、タブが4つのスペースに変換されます(挿入スペースを選択しました)、指定したインデントのタイプを適用します。

このオプションは、コードを読みやすくするためのものではありません。これは、Management Studioが現在ネイティブで提供している機能ではありません。サードパーティのオプションはいくつかありますが、一部は次のようにManagement Studioの外部にあります。

また、エディター内には、さまざまなレベルのフォーマット支援用のアドインもあります。

今、あなたがメッセージを受け取っている理由...

キーの組み合わせ(Ctrl + K、Ctrl + D)は、現在利用できないコマンド(Format Document)にバインドされています。

... SSMSがそのキーの組み合わせを別のコンテキストにマッピングしたためです。あなたがすべきである方法はこれを「修正」することができます-繰り返しますが、「修正」が機能したとしても、それはあなたが望んでいることをまだ行いません-行うことによって以下:

  1. Tools > Options > Environment > Keyboardに移動
  2. カーソルをPress shortcut keys:ボックスに置きます
  3. ヒット Ctrl+K、 Ctrl+D
  4. Shortcut currently used by:ドロップダウンをDataWarehouse DesignerからText Editorに変更します

    enter image description here

  5. OKを押します

これは、キーボードの組み合わせをテキストエディターにマップするために仮定ですが、Management Studioは、[OK]をクリックした後にそれを元に戻します(エラーメッセージが引き続き表示されます。したがって、問題は、ドキュメントがこの機能が存在すると信じているが、Management Studioはよりよく知っていて、それを提供しないことです(そしてMicrosoftはおそらく、これをドキュメントのバグとして書き留め、ツールの欠陥ではなく修正します)。将来的には希望があるかもしれませんが、今のところ これは既知でほとんど無視されている問題です です。 ドキュメントが参照しているFormattingタブが存在しないことに注意してください は存在しません(そこには、キーボードの組み合わせが機能するXMLがあります。ドキュメントにはおそらく次のように記述されています。

オプションダイアログのテキストエディタセクションの言語のFormattingペインで指定された言語にインデントとスペースの書式を適用します。テキストエディターでのみ使用できますおよび特定の言語のみ

SSMSがネイティブに提供するフォーマットオプションの種類を理解するもう1つの方法は、Tools > Customize > Commands > Edit > Add Command... > Formatにアクセスして、そこで可能なコマンドのリストを確認することです。実際の言語の知識があることを示すものは何もないため、改行を挿入したり、追加のインデントを追加したり、括弧を付けたりする場所がわかりません。

enter image description here

既存のT-SQLコードを読みやすくするために言語固有の書式設定が必要な場合は、SSMSから多くを得ることができないため、他のオプションを探す必要があります。

42
Aaron Bertrand

これはSSMSで可能だとは思いません。 Connect item がこの機能のために開かれました。

私が個人的に不適切な形式のSQLコードに使用したいのは Poor SQL 上のWebアプリケーションです。それはあなたの仕様に合わせてSQLコードをフォーマットするという本当に素晴らしい仕事をします。必要に応じてHTMLを生成することもできます。私は、SSMSプラグインや宣伝されているその他の成果物を使用していません。常にサイトにアクセスして、簡単なフォーマットを行ってから、SSMSにコピー/ペーストします。

12
Thomas Stringer

これを行うアドオンをインストールします。私はSQL Completeの無料版を使用しています: http://www.devart.com/dbforge/sql/sqlcomplete/ これはbasicSQLフォーマット機能。 SSMSと統合し、Ctrl + K、Dを使用します。

6
Robert Niestroj

SqlSmash は、SSMS 2012および2014でSQL(およびその他)をフォーマットできる商用ツールです。デフォルトのキーボードショートカットは(Ctrl + K、Ctrl + D)です。
免責事項:私はその背後にある開発者です。

2
Latish