Formattazione di T-SQL in SSMS 2012


39

Secondo questo documento Microsoft:

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

Dovrei essere in grado di usare ctrl + K quindi ctrl + D per formattare i miei documenti SQL in SQL Server Management Studio 2012 ma quando uso quella combinazione ottengo l'errore:

La combinazione di tasti (Ctrl + K, Ctrl + D) è associata al comando (Formato documento) che non è attualmente disponibile.

Sto cercando di apportare modifiche a un documento SQL esistente che non ha alcuna formattazione, il che rende estremamente difficile la lettura. Qualcuno sa come rendere disponibile il comando Format Document in modo che io possa avere questo codice per me in formato SQL?


Penso che la dichiarazione Available only in the text editorsia il modo in cui lo scrittore tecnico dice "non l'editor di query" senza chiamare esplicitamente il negativo
billinkc,

1
@billinkc Non credo sia del tutto giusto. L'editor di testo è "l'editor di query" utilizzato sia per Transact-SQL che per XML , semplicemente non è in realtà un editor di query quando si tratta di XML. Penso che la documentazione sia un po 'troppo promettente e ho commentato come tale sull'elemento Connect .
Aaron Bertrand

Risposte:


42

La combinazione di tasti che stai cercando ( Ctrl+ K, Ctrl+ D) è per la "formattazione", ma non nella misura che ti aspetti. Non è un prettificatore, è solo usato per inserire la spaziatura e le schede corrette come si trova inTools > Options > Text Editor > Transact-SQL > General/Tabs - quindi se si evidenzia una porzione di testo e si preme la combinazione di tasti, si suppone che converta le schede in 4 spazi (se si è selezionato Inserisci spazi), applica il tipo di rientro specificato, ecc.

Questa opzione NON ha lo scopo di rendere il codice più leggibile - questa non è funzionalità che Management Studio offre attualmente in modo nativo. Sebbene esistano diverse opzioni di terze parti, alcune sono esterne a Management Studio, come:

E ci sono anche componenti aggiuntivi per vari livelli di assistenza per la formattazione all'interno dell'editor:

Ora, il motivo per cui ricevi il messaggio ...

La combinazione di tasti (Ctrl + K, Ctrl + D) è associata al comando (Formato documento) che non è attualmente disponibile.

... è perché SSMS ha mappato quella combinazione di tasti in un contesto diverso. Il modo in cui dovresti essere in grado di "risolvere" questo - di nuovo, ancora non farebbe quello che vuoi che faccia, anche se la "correzione" ha funzionato - è facendo quanto segue:

  1. Vai a Tools > Options > Environment > Keyboard
  2. Posiziona il cursore nella Press shortcut keys:casella
  3. Premi Ctrl+ K, Ctrl+D
  4. Modifica il Shortcut currently used by:menu a discesa da DataWarehouse DesigneraText Editor

    inserisci qui la descrizione dell'immagine

  5. premere OK

Ora, si suppone che questo associ la combinazione di tastiera all'editor di testo, ma Management Studio lo ripristina dopo aver premuto OK (continuerai a ricevere il messaggio di errore. Quindi, penso che il problema sia che la documentazione ritiene che questa funzionalità esista, ma Management Studio lo sa meglio e semplicemente non lo offre (e probabilmente Microsoft lo scriverà come un bug nella documentazione e lo correggerà, piuttosto che un difetto nello strumento). Potrebbe esserci speranza in futuro ma, per ora, questo è un problema noto e ampiamente ignorato . Noterai che la Formattingscheda a cui fa riferimento la documentazione semplicemente non è presente (anche se è lì per XML, dove la combinazione di tasti funziona). La documentazione dovrebbe probabilmente indicare:

Applica il rientro e la formattazione dello spazio per la lingua specificata nel riquadro Formattazione della lingua nella sezione Editor di testo della finestra di dialogo Opzioni . Disponibile solo nell'editor di testo e solo per determinate lingue .

Un altro modo per farsi un'idea del tipo di opzioni di formattazione che SSMS offre in modo nativo è quello di andare a Tools > Customize > Commands > Edit > Add Command... > Formatconsultare l'elenco dei possibili comandi lì. Nulla indica che esiste una conoscenza della lingua effettiva, quindi non saprebbe dove inserire interruzioni di riga o aggiungere rientri aggiuntivi o fornire assistenza tra parentesi ecc.

inserisci qui la descrizione dell'immagine

Se desideri una formattazione specifica della lingua per rendere più leggibile il codice T-SQL esistente, non otterrai molto da SSMS e dovrai cercare altre opzioni.


1
Ho riscontrato gli stessi sintomi e comportamenti descritti dall'OP e da Aaron in SSMS 2016; tuttavia, sono stato in grado di farlo funzionare correttamente. La chiave stava rimuovendo tutti i comandi associati Ctrl+K, Ctrl+Dprima usando il Removepulsante, quindi seguendo il programma in quattro passaggi di Aaron per legare la tastiera, come definito sopra ( Tools > Options > Environment > Keyboard). Ecco uno screenshot di Optionscome appare la mia finestra di dialogo, una volta che tutto è configurato: pasteboard.co/GDYkh3h.jpg .
Mass Dot Net

Non sono affatto sicuro del perché questo commento non sia elencato come una risposta, dal momento che agita per me funziona facendo quello che hai detto.
Kristopher

12

Non credo sia possibile in SSMS. È stato aperto un elemento Connect per questa funzione.

Quello che mi piace personalmente utilizzare per il codice SQL mal formattato è l'applicazione Web su SQL scadente . Fa davvero un buon lavoro nel formattare il codice SQL secondo le tue specifiche. Genera anche HTML se lo desideri. Non utilizzo il plug-in SSMS o qualsiasi altro prodotto pubblicitario pubblicizzato, faccio sempre un salto sul sito per eseguire la formattazione rapida e quindi copiare / incollare direttamente in SSMS.


Grazie per il suggerimento su Poor SQL. Lo terrò sicuramente nascosto nella tasca posteriore!
Kris Gruttemeyer,

3
Un altro valido (utile anche per la formattazione del codice per i blog) è il Prettifier SQL di Simple-Talk .
Aaron Bertrand

Quindi, anche se il documento di Microsoft dice che può formattare, SSMS non può?

Poor SQL ha anche un plug-in per Notepad ++. Non so perché non dovresti utilizzare il plug-in SSMS. Funziona benissimo ora che finalmente lo hanno fatto funzionare con SSMS 2012+.
Jonathan Fite


2

SqlSmash è uno strumento commerciale che ti consente di formattare il tuo SQL (e molto altro) in SSMS 2012 e 2014. La scorciatoia da tastiera predefinita è (Ctrl + K, Ctrl + D).
Disclaimer: sono lo sviluppatore dietro di esso.


Si prega di aggiungere che lo strumento non è gratuito.
ypercubeᵀᴹ

Esiste una versione gratuita della community.
Jason Geiger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.