Formateo de T-SQL en SSMS 2012


39

De acuerdo con este documento de Microsoft:

http://msdn.microsoft.com/en-us/library/ms174205.aspx

Se supone que puedo usar ctrl + K y luego ctrl + D para formatear mis documentos SQL en SQL Server Management Studio 2012, pero cuando uso ese combo obtengo el error:

La combinación de teclas (Ctrl + K, Ctrl + D) está vinculada al comando (Formatear documento) que no está disponible actualmente.

Estoy tratando de hacer modificaciones a un documento SQL existente que no tiene formato, lo que hace que sea extremadamente difícil de leer. ¿Alguien sabe cómo hacer que el comando Formatear documento esté disponible para que yo pueda dar formato SQL a este código?


Creo que la declaración Available only in the text editores la manera del escritor de tecnología de decir "no es el editor de consultas" sin llamar explícitamente la negativa
billinkc

1
@billinkc No creo que sea del todo correcto. El editor de texto es el "editor de consultas" utilizado tanto para Transact-SQL como para XML , simplemente no es realmente un editor de consultas cuando se trata de XML. Creo que la documentación es un poco prometedora, y comenté como tal sobre el elemento Connect .
Aaron Bertrand

Respuestas:


42

La combinación de teclado que busca ( Ctrl+ K, Ctrl+ D) es para "formatear", pero no en la medida en que parece esperar. No es un prettifier, solo se usa para insertar el espaciado y las pestañas correctas como se encuentra en Tools > Options > Text Editor > Transact-SQL > General/Tabs- así que si resalta una parte del texto y presiona la combinación de teclado, se supone que debe convertir las pestañas en 4 espacios (si seleccionó insertar espacios), aplique el tipo de sangría que ha especificado, etc.

Esta opción NO está destinada a hacer que el código sea más legible; esta no es una funcionalidad que Management Studio ofrece actualmente de forma nativa. Aunque hay varias opciones de terceros, algunas son externas a Management Studio, como:

Y también hay complementos para varios niveles de asistencia de formato dentro del editor:

Ahora, la razón por la que recibes el mensaje ...

La combinación de teclas (Ctrl + K, Ctrl + D) está vinculada al comando (Formatear documento) que no está disponible actualmente.

... es porque SSMS ha asignado esa combinación de teclas a un contexto diferente. La forma en que debería poder "arreglar" esto, una vez más, todavía no haría lo que quiere que haga, incluso si la "solución" funcionó, es haciendo lo siguiente:

  1. Ir Tools > Options > Environment > Keyboard
  2. Coloca el cursor en el Press shortcut keys:cuadro
  3. Hit Ctrl+ K, Ctrl+D
  4. Cambiar el Shortcut currently used by:menú desplegable de DataWarehouse DesigneraText Editor

    ingrese la descripción de la imagen aquí

  5. presiona OK

Ahora, se supone que esto asigna la combinación de teclado al editor de texto, pero Management Studio la revierte después de presionar OK (continuará recibiendo el mensaje de error. Por lo tanto, creo que el problema es que la documentación cree que esta funcionalidad existe, pero Management Studio lo sabe mejor y simplemente no lo ofrece (y es probable que Microsoft lo descarte como un error en la documentación y lo corrija, en lugar de una deficiencia en la herramienta). Puede haber esperanza en el futuro pero, por ahora, este es un problema conocido y ampliamente ignorado . Notará que la Formattingpestaña a la que se refiere la documentación simplemente no está presente (aunque está allí para XML, donde funciona la combinación de teclado). La documentación probablemente debería indicar:

Aplica la sangría y el formato de espacio para el idioma especificado en el panel Formato del idioma en la sección Editor de texto del cuadro de diálogo Opciones . Disponible solo en el editor de texto y solo para ciertos idiomas .

Otra forma de tener una idea de qué tipo de opciones de formato ofrece SSMS de forma nativa es ir Tools > Customize > Commands > Edit > Add Command... > Formaty ver la lista de posibles comandos allí. Nada que indique que hay algún conocimiento del idioma real, por lo que no sabría dónde insertar saltos de línea o agregar sangrías adicionales o ayudar con paréntesis, etc.

ingrese la descripción de la imagen aquí

Si desea que el formato específico del idioma haga que el código T-SQL existente sea más legible, no obtendrá mucho de SSMS, y deberá buscar otras opciones.


1
Experimenté los mismos síntomas y comportamiento que describieron OP y Aaron en SSMS 2016; Sin embargo, pude hacer que funcionara correctamente. La clave fue eliminar todos los comandos vinculados a Ctrl+K, Ctrl+Dusar primero el Removebotón, luego seguir el programa de cuatro pasos de Aaron para vincular el teclado, como se definió anteriormente ( Tools > Options > Environment > Keyboard). Aquí hay una captura de pantalla de cómo se Optionsve mi cuadro de diálogo, una vez que todo está configurado: pasteboard.co/GDYkh3h.jpg .
Mass Dot Net

No estoy del todo seguro de por qué este comentario no aparece en la lista como respuesta, ya que me da miedo hacer lo que dijiste.
Kristopher

12

No creo que esto sea posible en SSMS. Se abrió un elemento Connect para esta función.

Lo que personalmente me gusta usar para un código SQL mal formateado es la aplicación web en Pobre SQL . Realiza un buen trabajo formateando el código SQL según sus especificaciones. Incluso genera HTML si así lo deseas. No utilizo el complemento SSMS ni ningún otro producto que anuncien, siempre salgo al sitio para realizar el formateo rápido y luego copiar / pegar directamente en SSMS.


Gracias por el consejo sobre Pobre SQL. ¡Voy a mantener esa metida en mi bolsillo trasero seguro!
Kris Gruttemeyer

3
Otro buen (también útil para formatear código para blogs) es el Prettifier SQL de Simple-Talk .
Aaron Bertrand

Entonces, aunque el documento de Microsoft dice que puede formatear, ¿SSMS no puede?

SQL deficiente también tiene un complemento para Notepad ++. Sin embargo, no estoy seguro de por qué no usaría el complemento SSMS. Funciona muy bien ahora que finalmente lo hicieron funcionar con SSMS 2012+.
Jonathan Fite


2

SqlSmash es una herramienta comercial que le permite formatear su SQL (y mucho más) en SSMS 2012 y 2014. El método abreviado de teclado predeterminado es (Ctrl + K, Ctrl + D).
Descargo de responsabilidad: soy el desarrollador detrás de esto.


Agregue que la herramienta no es gratuita.
ypercubeᵀᴹ

Hay una versión comunitaria gratuita.
Jason Geiger
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.