Mettre en forme Transact-SQL dans SSMS

S’applique à : SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison d'analytique SQL dans Microsoft FabricEntrepôt dans Fabric de MicrosoftBase de données SQL dans Fabric de Microsoft

La mise en forme cohérente facilite la lecture, la révision et la maintenance des Transact-SQL (T-SQL), en particulier lorsque plusieurs personnes contribuent au même codebase. SQL Server Management Studio (SSMS) inclut un outil de mise en forme SQL intégré que vous pouvez exécuter à la demande, configurer pour une mise en forme automatique lors de l’enregistrement et personnaliser via les paramètres de SSMS ou les fichiers .editorconfig.

La fonctionnalité de mise en forme SQL dans SSMS est basée sur ScriptDOM, une bibliothèque de .NET open source qui analyse T-SQL et génère des scripts basés sur des arborescences de syntaxe abstraites.

Prerequisites

Format à la demande

Vous pouvez mettre en forme T-SQL dans n’importe quelle fenêtre de l’éditeur de requête à tout moment. Le formateur peut s’appliquer à l’intégralité du document ou uniquement à une section de texte sélectionnée.

Pour mettre en forme SQL à la demande, utilisez l’une des méthodes suivantes :

  • Menu contextuel : cliquez avec le bouton droit dans une fenêtre d’éditeur T-SQL, puis sélectionnez Format SQL.
  • Menu Édition : sélectionnez Édition>Avancé>.
  • Raccourci clavier : appuyez sur Ctrl+K, Ctrl+Q.

Lorsque vous sélectionnez du texte, le formateur s’applique uniquement à la sélection. Lorsque vous ne sélectionnez pas de texte, le formateur s’applique à l’ensemble du document.

Formater à l’enregistrement

Lorsque vous activez l’option Format sur Enregistrer , le formateur applique automatiquement vos options de mise en forme configurées chaque fois que vous enregistrez un .sql fichier. Le format de l’enregistrement fonctionne avec des fenêtres de l’éditeur de requête nommées ou enregistrées et avec des fichiers dans des projets de base de données SQL. Le formatage à l’enregistrement garantit l’uniformité de vos fichiers SQL d’une pull request à l’autre et lors des revues de code.

Pour activer le format lors de l’enregistrement de tous les fichiers :

  1. Sélectionnez Outils>Options.
  2. Accédez à Formateur SQL>Formatage.
  3. Définissez Formatage à l’enregistrement sur True.
  4. Sélectionnez OK.

Vous pouvez également définir format_on_save = true dans un .editorconfig fichier pour activer le format à enregistrer pour tous les .sql fichiers de votre projet ou dossier. Pour plus d’informations, consultez le fichier .editorconfig.

Configurer les options de mise en forme

L’outil de formatage prend en charge un éventail d’options qui déterminent la mise en forme de votre SQL, telles que la casse des mots-clés, la taille du retrait, les points-virgules après les instructions et les sauts de ligne pour des clauses telles que FROM, WHERE et JOIN. Vous pouvez configurer ces options de deux manières : via les paramètres SSMS ou via un .editorconfig fichier.

Lorsqu’un paramètre SSMS et une .editorconfig valeur existent pour la même option, la .editorconfig valeur est prioritaire. Cette priorité vous permet de définir vos valeurs par défaut préférées dans SSMS et de les remplacer par projet ou par dossier par .editorconfig fichier.

Paramètres SSMS

Pour configurer les options de mise en forme dans SSMS :

  1. Sélectionnez Outils>Options.
  2. Accédez à SQL Formatter.
  3. Ajustez les paramètres dans les sous-catégories : Général, Alignement, Chemins, Mise en forme, Retrait, Multiligne, Nouvelle ligne et Espacement.
  4. Sélectionnez OK.

Fichier .editorconfig

Vous pouvez définir des options de mise en forme dans un .editorconfig fichier placé dans votre projet ou dossier. SSMS lit ces valeurs et les applique comme remplacements au-dessus des paramètres SSMS.

Toutes les clés du formateur SQL sont sous [*.sql] dans .editorconfig.

Général

Key Type Values Par défaut
sql_version enum Sql80 Sql90 Sql100 Sql110 Sql120 Sql130 Sql140 Sql150 Sql160 Sql170 Sql170
sql_engine_type enum All Standalone SqlAzure All

Alignement

Key Type Values Par défaut Description
align_clause_bodies bool true Aligner les corps de FROM, WHERE, GROUP BY et des clauses similaires.
align_column_definition_fields bool true Alignez les champs de définition de colonne, tels que le nom, le type et les contraintes.
align_set_clause_item bool true Aligner les éléments de clause SET dans les instructions UPDATE.
clause_body_alignment enum Aligned Indented Aligned Détermine si les corps de clause sont alignés avec le mot clé de clause ou placés sur la ligne suivante et mis en retrait.

Formatting

Key Type Values Par défaut Description
as_keyword_on_own_line bool true Placez AS sur une ligne distincte.
built_in_function_casing enum Preserve Uppercase Lowercase PascalCase Preserve Contrôle la casse des noms de fonctions intégrées.
column_alias_style enum AsKeyword EqualsSign Preserve Preserve Affichez les alias de colonne à l’aide du AS mot clé, d’un signe égal ou conservez le style d’origine.
comma_placement enum Trailing Leading Trailing Placez des virgules à la fin de la ligne (fin) ou au début de la ligne suivante (en tête) dans les listes multilignes.
format_on_save bool false Format automatique lors de l’enregistrement (SSMS uniquement, pas dans ScriptDOM).
identifier_bracketing enum Preserve IncludeBrackets ExcludeBrackets Preserve Détermine si les crochets autour des identificateurs sont conservés, ajoutés ou supprimés.
identifier_casing enum Preserve Uppercase Lowercase PascalCase Preserve Contrôle la casse appliquée aux identificateurs.
keyword_casing enum Uppercase Lowercase PascalCase Uppercase Style de casse des mots clés.
leading_comma_space_count int (0 - 1) 1 Contrôle le nombre d’espaces insérés après une virgule de début.
preserve_comments bool true Conservez les commentaires pendant la mise en forme.
terminate_block_statements bool false Contrôle si les instructions de bloc se terminent par un point-virgule.

Mise en retrait

Key Type Values Par défaut Description
indent_set_clause bool false Mettre en retrait la clause SET dans les instructions UPDATE.
indent_view_body bool false Mettre en retrait le corps VIEW.
indentation_mode enum Spaces Tabs Spaces Effectuez le retrait à l’aide d’espaces ou de tabulations.
indentation_size int (1 - 8) 4 Espaces par niveau de retrait.

Multiline

Key Type Par défaut Description
multiline_group_by_elements_list bool true GROUP BY éléments sur des lignes distinctes.
multiline_having_predicates_list bool true HAVING prédicats sur des lignes séparées.
multiline_in_values_list bool true IN valeurs d’expression sur des lignes séparées.
multiline_insert_sources_list bool true Sources INSERT sur plusieurs lignes.
multiline_insert_targets_list bool true Colonnes INSERT sur plusieurs lignes.
multiline_nested_function_calls bool true Paramètres dans des appels de fonction imbriqués sur plusieurs lignes.
multiline_order_by_elements_list bool true ORDER BY éléments sur des lignes distinctes.
multiline_partition_by_elements_list bool true PARTITION BY éléments sur des lignes distinctes.
multiline_procedure_parameters_list bool true Paramètres de la procédure stockée sur des lignes séparées.
multiline_select_elements_list bool true Colonnes SELECT sur plusieurs lignes.
multiline_set_clause_items bool true Éléments SET sur plusieurs lignes.
multiline_view_columns_list bool true Colonnes VIEW sur plusieurs lignes.
multiline_where_predicates_list bool true Prédicats WHERE sur plusieurs lignes.
multiline_with_options_list bool true Options dans des balises WITH et OPTION sur des lignes distinctes.

Nouvelle ligne

Key Type Par défaut
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 Type Par défaut Description
space_between_data_type_and_parameters bool true Espace entre le type de données et les parenthèses, par exemple VARCHAR (255)
space_between_parameters_in_data_type bool true Espace entre les paramètres dans les types de données

Exemple .editorconfig

L’exemple suivant montre un .editorconfig fichier qui définit quelques options couramment personnalisées. Toutes les propriétés non spécifiées dans le fichier sont renvoyées aux paramètres SSMS.

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

Partager des commentaires

La fonctionnalité de mise en forme SQL dans SSMS est basée sur la bibliothèque de .NET open source pour l’analyse T-SQL, ScriptDOM. Utilisez le système GitHub problèmes dans le référentiel ScriptDOM pour discuter des idées et des défis. Les pull requests sont les bienvenues.

Envoyez vos commentaires sur SSMS via Aide>Envoyer des commentaires dans SSMS ou via le canal de commentaires de Developer Community.