Formatieren Transact-SQL in SSMS

Gilt für: SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Durch konsistente Formatierung können Transact-SQL (T-SQL) leichter gelesen, überprüft und verwaltet werden, insbesondere, wenn mehrere Personen zur gleichen Codebasis beitragen. SQL Server Management Studio (SSMS) enthält einen integrierten SQL-Formatierer (Vorschau), den Sie bei Bedarf ausführen, für die automatische Formatierung beim Speichern konfigurieren und über SSMS-Einstellungen oder .editorconfig -Dateien anpassen können.

Die SQL-Formatierungsfunktionalität in SSMS basiert auf ScriptDOM, einer Open Source-.NET-Bibliothek, die T-SQL analysiert und Skripts basierend auf abstrakten Syntaxstrukturen generiert.

Voraussetzungen

Bei Bedarf formatieren

Sie können T-SQL in jedem Abfrage-Editor-Fenster jederzeit formatieren. Der Formatierer kann auf das gesamte Dokument oder nur auf einen markierten Textabschnitt angewendet werden.

Verwenden Sie zum Formatieren von SQL bei Bedarf eine der folgenden Methoden:

  • Kontextmenü: Klicken Sie mit der rechten Maustaste in ein T-SQL-Editorfenster, und wählen Sie "SQL formatieren (Vorschau)" aus.
  • Menü „Bearbeiten“: Wählen Sie Bearbeiten>Erweitert>SQL formatieren (Vorschau) aus.
  • Tastenkombination: Drücken Sie STRG+K, STRG+Q.

Wenn Sie Text markieren, wird die Formatierung nur auf die Auswahl angewendet. Wenn Sie keinen Text markieren, wird die Formatierung auf das gesamte Dokument angewendet.

Beim Speichern formatieren

Wenn Sie die Option " Speichern " aktivieren, wendet der Formatierer automatisch Ihre konfigurierten Formatierungsoptionen bei jedem Speichern einer .sql Datei an. Die Formatierung beim Speichern funktioniert mit benannten oder gespeicherten Abfrage-Editorfenstern sowie mit Dateien in SQL-Datenbankprojekten. Die Formatierung beim Speichern sorgt dafür, dass Ihre SQL-Dateien in Pull Requests und Code-Reviews konsistent bleiben.

So aktivieren Sie das Format beim Speichern für alle Dateien:

  1. Wählen Sie Extras>Optionen aus.
  2. Wechseln Sie zu SQL Formatter (Vorschau)>Formatierung.
  3. Setzen Sie Beim Speichern formatieren auf True.
  4. Wählen Sie OK aus.

Sie können auch format_on_save = true in einer .editorconfig-Datei festlegen, um die Formatierung beim Speichern für alle .sql-Dateien in Ihrem Projekt oder Ordner zu aktivieren. Weitere Informationen finden Sie in der EDITORCONFIG-Datei.

Konfigurieren von Formatierungsoptionen

Der Formatierer unterstützt einen Bereich von Optionen, die steuern, wie Ihre SQL formatiert wird, z. B. Groß-/Kleinschreibung von Schlüsselwörtern, Einzugsgröße, Semikolons nach Anweisungen und Zeilenumbrüche für Klauseln wie FROM, WHERE und JOIN. Sie können diese Optionen auf zwei Arten konfigurieren: über SSMS-Einstellungen oder über eine .editorconfig Datei.

Wenn sowohl eine SSMS-Einstellung als auch ein .editorconfig Wert für dieselbe Option vorhanden sind, hat der .editorconfig Wert Vorrang. Mit dieser Rangfolge können Sie Ihre bevorzugten Standardwerte in SSMS festlegen und diese pro Projekt oder Ordner mit einer .editorconfig Datei überschreiben.

SSMS-Einstellungen

So konfigurieren Sie Formatierungsoptionen in SSMS:

  1. Wählen Sie Extras>Optionen aus.
  2. Wechseln Sie zu SQL-Formatierer (Vorschau).
  3. Passen Sie die Einstellungen in den Unterkategorien an: General, Alignment, Paths, Formatting, Indentation, Multiline, New Line, and Spacing.
  4. Wählen Sie OK aus.

.editorconfig-Datei

Sie können Formatierungsoptionen in einer .editorconfig Datei definieren, die in Ihrem Projekt oder Ordner platziert ist. SSMS liest diese Werte aus und wendet sie als Überschreibungen auf die SSMS-Einstellungen an.

Alle SQL-Formatierungsschlüssel befinden sich unter [*.sql] in .editorconfig.

Allgemein

Key Typ Werte Default
sql_version enum Sql80 Sql90 Sql100 Sql110 Sql120 Sql130 Sql140 Sql150 Sql160 Sql170 Sql170
sql_engine_type enum All Standalone SqlAzure All

Ausrichtung

Key Typ Werte Default Beschreibung
align_clause_bodies bool true Richten Sie Textkörper von FROM, WHERE, GROUP BY und ähnlichen Klauseln aus.
align_column_definition_fields bool true Ausrichten von Spaltendefinitionsfeldern, z. B. Name, Typ und Einschränkungen.
align_set_clause_item bool true Richten Sie SET-Klauselelemente in UPDATE-Anweisungen aus.
clause_body_alignment enum Aligned Indented Aligned Steuert, ob Klauseltexte am Schlüsselwort der Klausel ausgerichtet oder in die nächste Zeile eingefügt und eingezogen werden.

Formatierung

Key Typ Werte Default Beschreibung
as_keyword_on_own_line bool true Setzen Sie AS in eine eigene Zeile.
built_in_function_casing enum Preserve Uppercase Lowercase PascalCase Preserve Steuert die Groß-/Kleinschreibung integrierter Funktionsnamen.
column_alias_style enum AsKeyword EqualsSign Preserve Preserve Spaltenaliase mit dem Schlüsselwort AS, einem Gleichheitszeichen oder im ursprünglichen Stil rendern.
comma_placement enum Trailing Leading Trailing Setzen Sie Kommas in mehrzeiligen Listen ans Ende der Zeile (nachgestellt) oder an den Anfang der nächsten Zeile (vorangestellt).
format_on_save bool false Automatisches Format beim Speichern (nur SSMS, nicht in ScriptDOM).
identifier_bracketing enum Preserve IncludeBrackets ExcludeBrackets Preserve Steuert, ob eckige Klammern um Bezeichner beibehalten, hinzugefügt oder entfernt werden.
identifier_casing enum Preserve Uppercase Lowercase PascalCase Preserve Steuert die Groß-/Kleinschreibung, die auf Bezeichner angewendet wird.
keyword_casing enum Uppercase Lowercase PascalCase Uppercase Groß-/Kleinschreibung von Schlüsselwörtern.
leading_comma_space_count int (0 - 1) 1 Steuert die Anzahl der Leerzeichen, die nach einem führenden Komma eingefügt wurden.
preserve_comments bool true Kommentare während der Formatierung beibehalten.
terminate_block_statements bool false Steuert, ob Blockanweisungen mit einem Semikolon enden.

Einrücken

Key Typ Werte Default Beschreibung
indent_set_clause bool false Rücken Sie die SET-Klausel in UPDATE-Anweisungen ein.
indent_view_body bool false Rücken Sie den VIEW-Textkörper ein.
indentation_mode enum Spaces Tabs Spaces Einrücken mithilfe von Leerzeichen oder Tabulatorzeichen.
indentation_size int (1 - 8) 4 Leerzeichen pro Einzugsebene.

Mehrzeilig

Key Typ Default Beschreibung
multiline_group_by_elements_list bool true GROUP BY Elemente in separaten Zeilen.
multiline_having_predicates_list bool true HAVING Prädikate in separaten Zeilen.
multiline_in_values_list bool true IN Ausdruckswerte in getrennten Zeilen.
multiline_insert_sources_list bool true Führen Sie einen INSERT-Vorgang für Quellen als mehrzeilig aus.
multiline_insert_targets_list bool true Führen Sie einen INSERT-Vorgang für Spalten als mehrzeilig aus.
multiline_nested_function_calls bool true Parameter in geschachtelten Funktionsaufrufen in separaten Zeilen.
multiline_order_by_elements_list bool true ORDER BY Elemente in getrennten Zeilen.
multiline_partition_by_elements_list bool true PARTITION BY Elemente in getrennten Zeilen.
multiline_procedure_parameters_list bool true Parameter für gespeicherte Prozeduren in separaten Zeilen.
multiline_select_elements_list bool true Führen Sie einen SELECT-Vorgang für Spalten als mehrzeilig aus.
multiline_set_clause_items bool true Führen Sie einen SET-Vorgang für Elemente als mehrzeilig aus.
multiline_view_columns_list bool true Führen Sie einen VIEW-Vorgang für Spalten als mehrzeilig aus.
multiline_where_predicates_list bool true Führen Sie einen WHERE-Vorgang für Prädikate als mehrzeilig aus.
multiline_with_options_list bool true Optionen in WITH und OPTION Klauseln in separaten Zeilen.

Neue Zeile

Key Typ Default
new_line_after_join_keyword bool true
new_line_before_close_parenthesis_in_multiline_list bool true
new_line_before_from_clause bool true
new_line_before_group_by_clause bool true
new_line_before_having_clause bool true
new_line_before_join_clause bool true
new_line_before_offset_clause bool true
new_line_before_on_clause bool true
new_line_before_open_parenthesis_in_multiline_list bool false
new_line_before_order_by_clause bool true
new_line_before_output_clause bool true
new_line_before_where_clause bool true
new_line_before_window_clause bool true
newline_formatted_check_constraint bool false
newline_formatted_index_definition bool false
num_newlines_after_batch_statement int (0 - 10) 2
num_newlines_after_batches int (0 - 10) 1
num_newlines_after_statement int (0 - 10) 1

Abstand

Key Typ Default Beschreibung
space_between_data_type_and_parameters bool true Leerraum zwischen Datentyp und Klammern, z. B. VARCHAR (255)
space_between_parameters_in_data_type bool true Abstand zwischen Params in Datentypen

Beispiel für .editorconfig

Das folgende Beispiel zeigt eine .editorconfig Datei, die einige häufig angepasste Optionen festlegt. Alle in der Datei nicht angegebenen Eigenschaften greifen auf die SSMS-Einstellungen zurück.

[*.sql]
keyword_casing                                      = lowercase
include_semicolons                                  = true
indentation_size                                    = 2
multiline_select_elements_list                      = true
new_line_before_from_clause                         = true

Feedback teilen

Die SQL-Formatierungsfunktionalität in SSMS basiert auf der Open-Source-.NET-Bibliothek für die T-SQL-Analyse, ScriptDOM. Verwenden Sie das GitHub Problemsystem im ScriptDOM-Repository, um Ideen und Herausforderungen zu besprechen. Pull Requests sind willkommen.

Senden Sie SSMS-Feedback über Hilfe>senden Feedback in SSMS oder über den Entwicklercommunity Feedbackkanal.