Transact-SQL opmaken in SSMS

Van toepassing op: SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analytics-eindpunt in Microsoft FabricWarehouse in Microsoft FabricSQL-database in Microsoft Fabric

Consistente opmaak maakt Transact-SQL (T-SQL) gemakkelijker te lezen, te controleren en te onderhouden, met name wanneer meerdere personen bijdragen aan dezelfde codebasis. SQL Server Management Studio (SSMS) bevat een ingebouwde SQL-formatter die u op aanvraag kunt uitvoeren, configureren voor automatische opmaak bij opslaan en aanpassen via SSMS-instellingen of .editorconfig -bestanden.

De SQL-opmaakfunctionaliteit in SSMS is gebouwd op basis van ScriptDOM, een opensource-.NET-bibliotheek die T-SQL parseert en scripts genereert op basis van abstracte syntaxisstructuren.

Prerequisites

Formattering op aanvraag

U kunt T-SQL op elk gewenst moment opmaken in elk queryeditorvenster. De opmaak kan worden toegepast op het hele document of alleen op een geselecteerde tekstsectie.

Als u SQL on demand wilt opmaken, gebruikt u een van de volgende methoden:

  • Contextmenu: Klik met de rechtermuisknop in een T-SQL-editorvenster en selecteer SQL opmaken.
  • Menu Bewerken: Selecteer Bewerken>Geavanceerd>.
  • Sneltoets: Druk op Ctrl+K, Ctrl+Q.

Wanneer u tekst selecteert, is de opmaak alleen van toepassing op de selectie. Wanneer u geen tekst selecteert, is de opmaak van toepassing op het hele document.

Opmaak bij opslaan

Wanneer u de optie Opmaak bij Opslaan inschakelt, worden de geconfigureerde opmaakopties automatisch toegepast wanneer u een .sql bestand opslaat. De indeling voor opslaan werkt met benoemde of opgeslagen queryeditorvensters en met bestanden in SQL Database-projecten. Opmaak bij opslaan houdt je SQL-bestanden consistent bij pull requests en code reviews.

Opmaak inschakelen voor opslaan voor alle bestanden:

  1. Selecteer Extra>Opties.
  2. Ga naar SQL Formatter>Opmaak.
  3. Stel Format on Save in op True.
  4. Kies OK.

U kunt format_on_save = true ook instellen in een .editorconfig-bestand om opmaak bij opslaan in te schakelen voor alle .sql-bestanden in uw project of map. Zie .editorconfig-bestand voor meer informatie.

Opmaakopties configureren

De formatter ondersteunt een reeks opties die bepalen hoe uw SQL wordt opgemaakt, zoals het gebruik van hoofdletters of kleine letters voor trefwoorden, de inspringingsgrootte, puntkomma's na statements en regeleinden voor clausules zoals FROM, WHERE en JOIN. U kunt deze opties op twee manieren configureren: via SSMS-instellingen of via een .editorconfig bestand.

Wanneer zowel een SSMS-instelling als een .editorconfig waarde voor dezelfde optie bestaat, heeft de .editorconfig waarde voorrang. Met deze prioriteit kunt u uw voorkeursinstellingen instellen in SSMS en deze per project of per map overschrijven met een .editorconfig bestand.

SSMS-instellingen

Opmaakopties configureren in SSMS:

  1. Selecteer Extra>Opties.
  2. Ga naar SQL Formatter.
  3. Pas de instellingen in de subcategorieën aan: Algemeen, Uitlijning, Paden, Opmaak, Inspringing, Meerdere regels, Nieuwe regel en Spatiëring.
  4. Kies OK.

.editorconfig-bestand

U kunt opmaakopties definiëren in een .editorconfig-bestand dat in uw project of map staat. SSMS leest deze waarden en past deze toe als overschrijvingen bovenop de SSMS-instellingen.

Alle SQL-formattersleutels gaan onder [*.sql] in .editorconfig.

Algemeen

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

Uitlijning

Key Typ Values Verstek Beschrijving
align_clause_bodies bool true Lichamen van FROM, WHERE, GROUP BY en vergelijkbare clausules uitlijnen.
align_column_definition_fields bool true Kolomdefinitievelden, zoals naam, type en beperkingen, uitlijnen.
align_set_clause_item bool true Lijn SET clausule-items uit in UPDATE statements.
clause_body_alignment enum Aligned Indented Aligned Bepaalt of clausuleblokken worden uitgelijnd met het clausuletrefwoord of op de volgende regel komen te staan en worden ingesprongen.

Opmaak

Key Typ Values Verstek Beschrijving
as_keyword_on_own_line bool true Plaats AS op een aparte regel.
built_in_function_casing enum Preserve Uppercase Lowercase PascalCase Preserve Hiermee bepaalt u de behuizing van ingebouwde functienamen.
column_alias_style enum AsKeyword EqualsSign Preserve Preserve Geef kolomaliassen weer met behulp van het AS trefwoord, een gelijkteken of behoud de oorspronkelijke stijl.
comma_placement enum Trailing Leading Trailing Plaats komma's aan het einde van de regel (trailing) of aan het begin van de volgende regel (leading) in meerregelige lijsten.
format_on_save bool false Automatisch opmaken bij opslaan (alleen SSMS, niet in ScriptDOM).
identifier_bracketing enum Preserve IncludeBrackets ExcludeBrackets Preserve Hiermee bepaalt u of vierkante haken rond id's behouden blijven, toegevoegd of verwijderd.
identifier_casing enum Preserve Uppercase Lowercase PascalCase Preserve Hiermee bepaalt u de behuizing die is toegepast op id's.
keyword_casing enum Uppercase Lowercase PascalCase Uppercase Stijl voor trefwoordbehuizing.
leading_comma_space_count int (0 - 1) 1 Hiermee bepaalt u het aantal spaties dat na een voorloopkomma is ingevoegd.
preserve_comments bool true Opmerkingen behouden tijdens de opmaak.
terminate_block_statements bool false Hiermee bepaalt u of blokinstructies eindigen met een puntkomma.

Inspringing

Key Typ Values Verstek Beschrijving
indent_set_clause bool false Clausule SET laten inspringen in UPDATE instructies.
indent_view_body bool false Hoofdtekst laten inspringen VIEW .
indentation_mode enum Spaces Tabs Spaces Inspringen met spaties of tabtekens.
indentation_size int (1 - 8) 4 Aantal spaties per insprongniveau.

Meerdere regels

Key Typ Verstek Beschrijving
multiline_group_by_elements_list bool true GROUP BY elementen op afzonderlijke lijnen.
multiline_having_predicates_list bool true HAVING predicaten op afzonderlijke regels.
multiline_in_values_list bool true IN expressiewaarden op afzonderlijke regels.
multiline_insert_sources_list bool true INSERT bronnen als meerdere regels.
multiline_insert_targets_list bool true INSERT kolommen als meerdere regels.
multiline_nested_function_calls bool true Parameters in geneste functie-aanroepen op afzonderlijke regels.
multiline_order_by_elements_list bool true ORDER BY elementen op afzonderlijke lijnen.
multiline_partition_by_elements_list bool true PARTITION BY elementen op afzonderlijke lijnen.
multiline_procedure_parameters_list bool true Parameters van opgeslagen procedures op aparte regels.
multiline_select_elements_list bool true SELECT kolommen als meerdere regels.
multiline_set_clause_items bool true SET items als meerdere regels.
multiline_view_columns_list bool true VIEW kolommen als meerdere regels.
multiline_where_predicates_list bool true WHERE predikaten als meerregelig.
multiline_with_options_list bool true Opties in WITH- en OPTION-clausules op afzonderlijke regels.

Nieuwe regel

Key Typ Verstek
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

Spacing

Key Typ Verstek Beschrijving
space_between_data_type_and_parameters bool true Ruimte tussen gegevenstype en parens, bijvoorbeeld VARCHAR (255)
space_between_parameters_in_data_type bool true Ruimte tussen parameters in gegevenstypen

Voorbeeld van .editorconfig

In het volgende voorbeeld ziet u een .editorconfig bestand waarmee een aantal veelgebruikte opties worden ingesteld. Eigenschappen die niet in het bestand zijn opgegeven, vallen terug op de SSMS-instellingen.

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

Feedback delen

De sql-opmaakfunctionaliteit in SSMS is gebouwd op basis van de opensource-.NET-bibliotheek voor T-SQL-parsering, ScriptDOM. Gebruik het systeem GitHub problemen in de opslagplaats ScriptDOM om ideeën en uitdagingen te bespreken. Pull-aanvragen zijn welkom.

Stuur SSMS-feedback via Help>Feedback verzenden in SSMS of via het Developer Community feedbackkanaal.