Formattare Transact-SQL in SSMS

Si applica a: SQL Serverdatabase SQL di AzureIstanza gestita SQL di AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft FabricDatabase SQL in Microsoft Fabric

La formattazione coerente semplifica la lettura, la revisione e la manutenzione di Transact-SQL (T-SQL), soprattutto quando più persone contribuiscono alla stessa codebase. SQL Server Management Studio (SSMS) include un formattatore SQL predefinito (anteprima) che è possibile eseguire su richiesta, configurare per la formattazione automatica al salvataggio e personalizzare tramite impostazioni o .editorconfig file di SSMS.

La funzionalità di formattazione SQL in SSMS si basa su ScriptDOM, una libreria di .NET open source che analizza T-SQL e genera script basati su alberi della sintassi astratta.

Prerequisiti

Formattare su richiesta

È possibile formattare T-SQL in qualsiasi finestra dell'editor di query in qualsiasi momento. Il formattatore può essere applicato all'intero documento o solo a una sezione di testo selezionata.

Per formattare SQL su richiesta, usare uno dei metodi seguenti:

  • Menu di scelta rapida: fare clic con il pulsante destro del mouse in una finestra dell'editor T-SQL e scegliere Formato SQL (anteprima).
  • Menu Modifica: selezionare Modifica> formatoavanzato>SQL (anteprima).
  • Scelta rapida da tastiera: premere CTRL+K, CTRL+Q.

Quando si seleziona il testo, il formattatore si applica solo alla selezione. Quando non si seleziona testo, il formattatore si applica all'intero documento.

Formato al salvataggio

Quando si attiva l'opzione Formato su Salva , il formattatore applica automaticamente le opzioni di formattazione configurate ogni volta che si salva un .sql file. La formattazione al salvataggio funziona per le finestre dell'editor di query denominate o salvate e per i file nei progetti di database SQL. Il formato al salvataggio mantiene coerenti i file SQL tra richieste pull e revisioni del codice.

Per abilitare il formato al salvataggio per tutti i file:

  1. Selezionare Strumenti>Opzioni.
  2. Vai a Formattatore SQL (Anteprima)>Formattazione.
  3. Imposta Formattazione al salvataggio su True.
  4. Seleziona OK.

Puoi anche impostare format_on_save = true in un file .editorconfig per abilitare la formattazione al salvataggio per tutti i file .sql nel tuo progetto o nella tua cartella. Per altre informazioni, vedere il file .editorconfig.

Configurare le opzioni di formattazione

Il formattatore supporta un intervallo di opzioni che controllano la modalità di stile di SQL, ad esempio maiuscole e minuscole delle parole chiave, dimensioni del rientro, punti e virgola dopo le istruzioni e interruzioni di riga per clausole come FROM, WHEREe JOIN. È possibile configurare queste opzioni in due modi: tramite le impostazioni di SSMS o tramite un .editorconfig file.

Quando esistono sia un'impostazione di SSMS che un .editorconfig valore per la stessa opzione, il .editorconfig valore ha la precedenza. Questa precedenza consente di impostare le impostazioni predefinite preferite in SSMS ed eseguirne l'override per progetto o per cartella con un .editorconfig file.

Impostazioni di SSMS

Per configurare le opzioni di formattazione in SSMS:

  1. Selezionare Strumenti>Opzioni.
  2. Vai a Formattatore SQL (Anteprima).
  3. Modifica le impostazioni nelle sottocategorie: Generale, Allineamento, Percorsi, Formattazione, Rientro, Multilinea, Nuova riga e Spaziatura.
  4. Seleziona OK.

file .editorconfig

È possibile definire le opzioni di formattazione in un .editorconfig file inserito nel progetto o nella cartella. SSMS legge questi valori e li applica come sovrascritture in sovrapposizione alle impostazioni di SSMS.

Tutte le chiavi del formattatore SQL rientrano sotto [*.sql] in .editorconfig.

Generale

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

Allineamento

Key Tipo Predefinito Description
align_clause_bodies bool true Allineare i corpi di FROM, WHERE, GROUP BY e clausole simili.
align_column_definition_fields bool true Allineare i campi di definizione della colonna, ad esempio nome, tipo e vincoli.
align_set_clause_item bool true Allineare gli elementi di clausola SET nelle istruzioni UPDATE

Paths

Key Tipo Predefinito
allow_external_language_paths bool true
allow_external_library_paths bool true

Formattazione

Key Tipo Values Predefinito Description
format_on_save bool false Formattazione automatica al salvataggio (solo SSMS, non in ScriptDOM).
as_keyword_on_own_line bool true Posiziona AS su una riga separata.
include_semicolons bool false Accodare punti e virgola alle istruzioni.
keyword_casing enum Uppercase Lowercase PascalCase Uppercase Stile di scrittura delle parole chiave in maiuscolo/minuscolo.
preserve_comments bool true Mantenere i commenti durante la formattazione.

Indentazione

Key Tipo Predefinito Description
indent_set_clause bool false Applica un rientro alla clausola SET nelle istruzioni UPDATE.
indentation_size int (1-8) 4 Spazi per livello di rientro.
indent_view_body bool false Rientra VIEW il corpo.

Multilinea

Key Tipo Predefinito Description
multiline_insert_sources_list bool true INSERT sorgenti come multilinee.
multiline_insert_targets_list bool true INSERT colonne su più righe.
multiline_select_elements_list bool true SELECT colonne su più righe.
multiline_set_clause_items bool true SET elementi come testo su più righe.
multiline_view_columns_list bool true VIEW colonne come multilinea.
multiline_where_predicates_list bool true WHERE predicati come multilinea.

Nuova riga

Key Tipo Predefinito
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_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_statement int (0-5) 1

Spacing

Key Tipo Predefinito Description
space_between_data_type_and_parameters bool true Spazio tra il tipo di dati e i parens, ad esempio VARCHAR (255)
space_between_parameters_in_data_type bool true Spazio tra parametri nei tipi di dati

Esempio di file con estensione editorconfig

L'esempio seguente mostra un .editorconfig file che imposta alcune opzioni comunemente personalizzate. Qualsiasi proprietà non specificata nel file esegue il fallback alle impostazioni di SSMS.

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

Condividi commenti

La funzionalità di formattazione SQL in SSMS si basa sulla libreria di .NET open source per l'analisi T-SQL, ScriptDOM. Usare il sistema di problemi di GitHub nel repository ScriptDOM per discutere idee e sfide. Le pull request sono ben accette.

Invia commenti su SSMS tramite Guida>Invia commenti e suggerimenti in SSMS o tramite il canale di feedback di Developer Community.