Formatieren von T-SQL in SSMS 2012

39

In diesem Microsoft-Dokument heißt es:

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

Ich sollte in der Lage sein, mit Strg + K und dann mit Strg + D meine SQL-Dokumente in SQL Server Management Studio 2012 zu formatieren, aber wenn ich diese Kombination verwende, erhalte ich den Fehler:

Die Tastenkombination (Strg + K, Strg + D) ist an den Befehl (Dokument formatieren) gebunden, der derzeit nicht verfügbar ist.

Ich versuche, Änderungen an einem vorhandenen SQL-Dokument vorzunehmen, das überhaupt nicht formatiert ist, was das Lesen extrem erschwert. Weiß jemand, wie man den Befehl Dokument formatieren zur Verfügung stellt, damit ich diesen Code im SQL-Format für mich formatieren kann?

Aaron Bertrand
quelle
Ich denke, die Aussage Available only in the text editorist die Art und Weise, wie der
Techwriter
1
@billinkc Ich denke nicht, dass das ganz richtig ist. Der Texteditor ist der "Abfrageeditor", der sowohl für Transact-SQL als auch für XML verwendet wird. Bei XML handelt es sich lediglich nicht wirklich um einen Abfrageeditor. Ich halte die Dokumentation für etwas vielversprechend und habe das Connect-Element als solches kommentiert .
Aaron Bertrand

Antworten:

42

Die Tastaturkombination, nach der Sie suchen ( Ctrl+ K, Ctrl+ D), ist für die "Formatierung" gedacht - aber nicht in dem Maße, wie Sie es zu erwarten scheinen. Es ist kein Prettifier, es wird nur zum Einfügen von korrekten Abständen und Tabulatoren verwendet. Tools > Options > Text Editor > Transact-SQL > General/TabsWenn Sie also einen Teil des Textes markieren und die Tastenkombination drücken, werden Tabulatoren in 4 Leerzeichen umgewandelt (wenn Sie Einfügen ausgewählt haben) Leerzeichen), wenden Sie die Art der Einrückung an, die Sie angegeben haben, usw.

Diese Option dient NICHT dazu, den Code besser lesbar zu machen - dies ist keine Funktionalität, die Management Studio derzeit nativ bietet. Es gibt zwar mehrere Optionen von Drittanbietern - einige befinden sich außerhalb von Management Studio, z.

Und es gibt auch Add-Ins für verschiedene Ebenen der Formatierungsunterstützung im Editor:

Nun, der Grund, warum Sie die Nachricht erhalten ...

Die Tastenkombination (Strg + K, Strg + D) ist an den Befehl (Dokument formatieren) gebunden, der derzeit nicht verfügbar ist.

... weil SSMS diese Tastenkombination einem anderen Kontext zugeordnet hat. Die Art und Weise, wie Sie dies "beheben" können sollten , ist folgende:

  1. Gehe zu Tools > Options > Environment > Keyboard
  2. Platzieren Sie den Cursor in der Press shortcut keys:Box
  3. Drücken Sie Ctrl+ K, Ctrl+D
  4. Ändern Sie das Shortcut currently used by:Dropdown-Menü von DataWarehouse DesignerinText Editor

    Bildbeschreibung hier eingeben

  5. drücke OK

Das soll nun die Tastaturkombination dem Texteditor zuordnen, aber Management Studio setzt sie zurück, nachdem Sie auf OK geklickt haben (Sie erhalten weiterhin die Fehlermeldung. Ich denke also, das Problem ist, dass die Dokumentation glaubt, dass diese Funktionalität existiert, aber Management Studio weiß es besser und bietet es einfach nicht an (und Microsoft wird es wahrscheinlich als einen Fehler in der Dokumentation abschreiben und korrigieren, anstatt einen Mangel im Tool.) In der Zukunft besteht möglicherweise Hoffnung, aber im Moment Dies ist ein bekanntes und weitgehend ignoriertes Problem . Sie werden feststellen, dass die FormattingRegisterkarte, auf die sich die Dokumentation bezieht, einfach nicht vorhanden ist (obwohl sie für XML vorhanden ist, wo die Tastenkombination funktioniert).

Gilt das Einrücken und Raum für die Sprache auf dem angegebenen Formatierung Formatierung Bereich der Sprache im Texteditor Abschnitt des Option - Dialogs. Nur im Texteditor und nur für bestimmte Sprachen verfügbar .

Eine andere Möglichkeit, sich einen Überblick über die Formatierungsoptionen zu verschaffen, die SSMS nativ bietet, besteht darin, Tools > Customize > Commands > Edit > Add Command... > Formatdie Liste der möglichen Befehle dort aufzurufen . Nichts, was darauf hinweist, dass Kenntnisse der eigentlichen Sprache vorhanden sind, sodass es nicht weiß, wo Zeilenumbrüche eingefügt oder zusätzliche Einrückungen hinzugefügt oder Klammern usw. verwendet werden müssen.

Bildbeschreibung hier eingeben

Wenn Sie eine sprachspezifische Formatierung wünschen, um den vorhandenen T-SQL-Code besser lesbar zu machen, werden Sie von SSMS nicht viel profitieren und müssen nach anderen Optionen suchen.

Aaron Bertrand
quelle
1
Ich habe die gleichen Symptome und Verhaltensweisen erlebt, die sowohl vom OP als auch von Aaron im SSMS 2016 beschrieben wurden. Ich war jedoch in der Lage, es richtig zum Laufen zu bringen. Die Taste löschte alle Befehle, die Ctrl+K, Ctrl+Dzuerst mit der RemoveTaste eingegeben wurden, und befolgte dann Aarons vierstufiges Programm zum Binden der Tastatur, wie oben definiert ( Tools > Options > Environment > Keyboard). Hier ist ein Screenshot von meinem OptionsDialogfeld, wenn alles eingerichtet ist: pasteboard.co/GDYkh3h.jpg .
Mass Dot Net
Ich bin mir nicht sicher, warum dieser Kommentar nicht als Antwort aufgeführt ist, da es für mich verdammt gut ist, das zu tun, was Sie gesagt haben.
Kristopher
12

Ich glaube nicht, dass dies in SSMS möglich ist. Für diese Funktion wurde ein Connect-Objekt geöffnet.

Was ich persönlich gerne für schlecht formatierten SQL-Code verwende, ist die Webanwendung unter Poor SQL . Es macht eine wirklich gute Arbeit, SQL-Code nach Ihren Vorgaben zu formatieren. Erzeugt sogar HTML, wenn Sie dies wünschen. Ich verwende weder das SSMS-Plug-In noch andere von ihnen beworbene Produkte. Ich gehe immer auf die Website, um die schnelle Formatierung vorzunehmen und kopiere / füge sie dann direkt in SSMS ein.

Thomas Stringer
quelle
Danke für den Tipp zu Poor SQL. Ich werde das mit Sicherheit in meiner Gesäßtasche verstauen!
Kris Gruttemeyer,
3
Ein weiterer guter Code (der sich auch zum Formatieren von Code für Blogs eignet) ist der SQL Prettifier von Simple-Talk .
Aaron Bertrand
Obwohl das Dokument von Microsoft besagt, dass es formatiert werden kann, kann SSMS dies nicht?
Schlechtes SQL hat auch ein Plug-In für Notepad ++. Ich bin mir nicht sicher, warum Sie das SSMS-Plug-in nicht verwenden würden. Es funktioniert großartig, seitdem es endlich mit SSMS 2012+ funktioniert.
Jonathan Fite
6

Installieren Sie dazu ein Add-On. Ich verwende die kostenlose Edition von SQL Complete: http://www.devart.com/dbforge/sql/sqlcomplete/, die einige grundlegende SQL-Formatierungsfunktionen bietet . Es lässt sich in SSMS integrieren und verwendet Strg + K, D.

Robert Niestroj
quelle
kostenlose Online-Version sql-format.com
Iman Abidi
2

SqlSmash ist ein kommerzielles Tool, mit dem Sie SQL (und vieles mehr) in SSMS 2012 und 2014 formatieren können. Die Standardtastenkombination lautet (Strg + K, Strg + D).
Haftungsausschluss: Ich bin der Entwickler dahinter.

Neuer
quelle
Bitte fügen Sie hinzu, dass das Tool nicht kostenlos ist.
Ypercubeᵀᴹ
Es gibt eine kostenlose Community-Version.
Jason Geiger