Dar formato a Transact-SQL en SSMS

Se aplica a: SQL ServerAzure SQL DatabaseInstancia Gestionada de Azure SQLAzure Synapse AnalyticsSistema de Plataforma Analítica (PDW)Punto de análisis SQL en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

El formato coherente facilita la lectura, revisión y mantenimiento de Transact-SQL (T-SQL), especialmente cuando varias personas contribuyen al mismo código base. SQL Server Management Studio (SSMS) incluye un formateador SQL integrado que se puede ejecutar a petición, configurar para el formato automático al guardar y personalizar a través de la configuración de SSMS o de archivos .editorconfig.

La funcionalidad de formato de SQL en SSMS se basa en ScriptDOM, una biblioteca de código abierto .NET que analiza T-SQL y genera scripts basados en árboles de sintaxis abstractos.

Prerequisites

Formato a petición

Puede dar formato A T-SQL en cualquier ventana del editor de consultas en cualquier momento. El formateador puede aplicarse a todo el documento o solo a una sección seleccionada de texto.

Para dar formato a SQL a petición, use uno de los métodos siguientes:

  • Menú contextual: haz clic con el botón derecho en una ventana del editor de T-SQL y selecciona Formatear SQL.
  • menú Editar: seleccione Editar>Avanzado>.
  • Método abreviado de teclado: presione Ctrl+K, Ctrl+Q.

Al seleccionar texto, el formateador solo se aplica a la selección. Cuando no selecciona texto, el formateador se aplica a todo el documento.

Formatear al guardar

Al activar la opción Formato en Guardar , el formateador aplica automáticamente las opciones de formato configuradas cada vez que guarde un .sql archivo. Dar formato al guardar funciona en ventanas del editor de consultas con nombre o guardadas y en archivos de proyectos de base de datos SQL. El formateo al guardar mantiene tus archivos SQL uniformes en todas las pull requests y revisiones de código.

Para activar el formateo al guardar para todos los archivos:

  1. Seleccione Herramientas>Opciones.
  2. Vaya a Formateador SQL>Formato.
  3. Establezca Formatear al guardar en True.
  4. Selecciona Aceptar.

También puede configurar format_on_save = true en un archivo .editorconfig para habilitar el formateo al guardar para todos los archivos .sql de su proyecto o carpeta. Para obtener más información, vea archivo .editorconfig.

Configuración de las opciones de formato

El formateador admite diversas opciones que controlan el formato de SQL, como la capitalización de las palabras clave, el tamaño de la sangría, los puntos y coma después de las sentencias y los saltos de línea en cláusulas como FROM, WHERE y JOIN. Puede configurar estas opciones de dos maneras: a través de la configuración de SSMS o a través de un .editorconfig archivo.

Cuando existe una configuración de SSMS y un .editorconfig valor para la misma opción, el .editorconfig valor tiene prioridad. Esta precedencia le permite establecer los valores predeterminados preferidos en SSMS e invalidarlos por proyecto o por carpeta con un .editorconfig archivo.

Configuración de SSMS

Para configurar las opciones de formato en SSMS:

  1. Seleccione Herramientas>Opciones.
  2. Vaya a Formateador de SQL.
  3. Ajuste la configuración de las subcategorías: General, Alignment, Paths, Format, Indentation, Multiline, New Line y Spacing.
  4. Selecciona Aceptar.

Archivo .editorconfig

Puede definir opciones de formato en un .editorconfig archivo colocado en el proyecto o carpeta. SSMS lee estos valores y los aplica como invalidaciones sobre la configuración de SSMS.

Todas las claves del formateador SQL van bajo [*.sql] en .editorconfig.

General

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

Alineación

Key Tipo Values Predeterminado Descripción
align_clause_bodies bool true Alinee los cuerpos de FROM, WHERE, GROUP BY y cláusulas similares.
align_column_definition_fields bool true Alinee los campos de definición de columna, como el nombre, el tipo y las restricciones.
align_set_clause_item bool true Alinear SET los elementos de las cláusulas en las UPDATE sentencias.
clause_body_alignment enum Aligned Indented Aligned Controla si los cuerpos de las cláusulas se alinean con la palabra clave de la cláusula o se colocan en la línea siguiente con sangría.

Formato

Key Tipo Values Predeterminado Descripción
as_keyword_on_own_line bool true Coloque AS en su propia línea.
built_in_function_casing enum Preserve Uppercase Lowercase PascalCase Preserve Controla el uso de mayúsculas y minúsculas de los nombres de las funciones integradas.
column_alias_style enum AsKeyword EqualsSign Preserve Preserve Representar alias de columna mediante la AS palabra clave , un signo igual o conservar el estilo original.
comma_placement enum Trailing Leading Trailing Coloque comas al final de la línea (final) o el inicio de la línea siguiente (inicial) en listas de varias líneas.
format_on_save bool false Formato automático al guardar (solo SSMS, no en ScriptDOM).
identifier_bracketing enum Preserve IncludeBrackets ExcludeBrackets Preserve Controla si los corchetes alrededor de los identificadores se conservan, agregan o quitan.
identifier_casing enum Preserve Uppercase Lowercase PascalCase Preserve Controla el uso de mayúsculas y minúsculas en los identificadores.
keyword_casing enum Uppercase Lowercase PascalCase Uppercase Estilo de uso de mayúsculas y minúsculas en palabras clave.
leading_comma_space_count int (0 - 1) 1 Controla el número de espacios insertados después de una coma inicial.
preserve_comments bool true Mantener los comentarios durante el formateo.
terminate_block_statements bool false Controla si las sentencias de bloque terminan con un punto y coma.

Sangría

Key Tipo Values Predeterminado Descripción
indent_set_clause bool false Cláusula Indent en SET instrucciones UPDATE.
indent_view_body bool false Aplicar sangría al cuerpo VIEW.
indentation_mode enum Spaces Tabs Spaces Sangría con espacios o caracteres de tabulación.
indentation_size int (1 - 8) 4 Espacios por nivel de sangría.

Multilínea

Key Tipo Predeterminado Descripción
multiline_group_by_elements_list bool true GROUP BY elementos en líneas separadas.
multiline_having_predicates_list bool true HAVING predicados en líneas independientes.
multiline_in_values_list bool true IN valores de expresión en líneas independientes.
multiline_insert_sources_list bool true INSERT orígenes como multilínea.
multiline_insert_targets_list bool true INSERT columnas como multilínea.
multiline_nested_function_calls bool true Parámetros en llamadas de función anidadas en líneas independientes.
multiline_order_by_elements_list bool true ORDER BY elementos en líneas separadas.
multiline_partition_by_elements_list bool true PARTITION BY elementos en líneas separadas.
multiline_procedure_parameters_list bool true Parámetros de un procedimiento almacenado en líneas separadas.
multiline_select_elements_list bool true SELECT columnas como multilínea.
multiline_set_clause_items bool true SET elementos en varias líneas.
multiline_view_columns_list bool true VIEW columnas como multilínea.
multiline_where_predicates_list bool true WHERE predicados como multilínea.
multiline_with_options_list bool true Opciones en las cláusulas WITH y OPTION en líneas separadas.

Nueva línea

Key Tipo Predeterminado
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 Tipo Predeterminado Descripción
space_between_data_type_and_parameters bool true Espacio entre el tipo de dato y los paréntesis, por ejemplo VARCHAR (255)
space_between_parameters_in_data_type bool true Espacio entre parámetros en tipos de datos

Ejemplo de .editorconfig

En el ejemplo siguiente se muestra un .editorconfig archivo que establece algunas opciones personalizadas habitualmente. Las propiedades no especificadas en el archivo se revierten a la configuración de SSMS.

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

Compartir comentarios

La funcionalidad de formato SQL en SSMS se basa en la biblioteca de código abierto .NET para el análisis de T-SQL, ScriptDOM. Use el sistema de problemas de GitHub en el repositorio ScriptDOM para analizar ideas y desafíos. Se aceptan pull requests.

Envíe comentarios de SSMS a través de la Ayuda>para enviar comentarios en SSMS o a través del canal de comentarios de Developer Community.