Mise en forme de T-SQL dans SSMS 2012

39

Selon ce document Microsoft:

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

Je suis supposé pouvoir utiliser ctrl + K puis ctrl + D pour formater mes documents SQL dans SQL Server Management Studio 2012, mais lorsque j'utilise cette liste déroulante, l'erreur suivante apparaît:

La combinaison de touches (Ctrl + K, Ctrl + D) est liée à la commande (Formater le document) qui n’est actuellement pas disponible.

J'essaie d'apporter des modifications à un document SQL existant qui n'a aucun format, ce qui le rend extrêmement difficile à lire. Est-ce que quelqu'un sait comment rendre la commande Format du document disponible afin que je puisse avoir le code SQL ce code pour moi?

Aaron Bertrand
la source
Je pense que la déclaration Available only in the text editorest la façon dont le rédacteur technique dit "pas l'éditeur de requêtes" sans appeler explicitement le négatif
billinkc le
1
@ Billinkc Je ne pense pas que ce soit tout à fait vrai. L'éditeur de texte est "l'éditeur de requête" utilisé à la fois pour Transact-SQL et XML . Ce n'est tout simplement pas un éditeur de requête lorsqu'il s'agit de XML. Je pense que la documentation est un peu trop prometteuse et j'ai commenté comme tel l'élément Connect .
Aaron Bertrand

Réponses:

42

La combinaison de clavier que vous recherchez ( Ctrl+ K, Ctrl+ D) sert à "formater" - mais pas dans la mesure que vous semblez attendre. Ce n’est pas un prétexte, il est simplement utilisé pour insérer l’espacement correct et les tabulations, comme dans le cas présent Tools > Options > Text Editor > Transact-SQL > General/Tabs. Ainsi, si vous mettez en surbrillance une partie du texte et appuyez sur la combinaison de touches, elle est supposée convertir les tabulations en 4 espaces (si vous avez sélectionné insert espaces), appliquez le type d’indentation que vous avez spécifié, etc.

Cette option N'EST PAS destinée à rendre le code plus lisible - il ne s'agit pas d'une fonctionnalité actuellement proposée par Management Studio en mode natif. Bien qu'il existe plusieurs options tierces - certaines sont externes à Management Studio, telles que:

Et il existe également des compléments pour différents niveaux d’aide au formatage dans l’éditeur:

Maintenant, la raison pour laquelle vous recevez le message ...

La combinaison de touches (Ctrl + K, Ctrl + D) est liée à la commande (Formater le document) qui n’est actuellement pas disponible.

... c'est parce que SSMS a associé cette combinaison de touches à un contexte différent. La façon dont vous devriez pouvoir "réparer" ceci - encore une fois, cela ne ferait toujours pas ce que vous voulez, même si le "correctif" fonctionne - est comme suit:

  1. Aller à Tools > Options > Environment > Keyboard
  2. Placez votre curseur dans la Press shortcut keys:case
  3. Hit Ctrl+ K, Ctrl+D
  4. Changer le Shortcut currently used by:menu déroulant de DataWarehouse DesigneràText Editor

    entrez la description de l'image ici

  5. appuyer sur OK

Maintenant, ceci est supposé mapper la combinaison de clavier sur l'éditeur de texte, mais Management Studio la rétablit après avoir appuyé sur OK (vous continuerez à recevoir le message d'erreur. Je pense donc que le problème est que la documentation pense que cette fonctionnalité existe, mais la gestion Studio sait mieux et ne l’offre tout simplement pas (et Microsoft l’écrira probablement comme un bogue dans la documentation et le corrigera plutôt que comme une lacune dans l’outil). Il y aura peut-être de l’espoir dans l’avenir, mais pour le moment, Il s'agit d'un problème connu et en grande partie ignoré . Vous remarquerez que l' Formattingonglet auquel la documentation fait référence n'est tout simplement pas présent (bien qu'il existe pour XML, où la combinaison de touches fonctionne). La documentation devrait probablement indiquer:

Applique la mise en retrait et la mise en forme de l'espace pour la langue spécifiée dans le volet Mise en forme de la langue dans la section Editeur de texte de la boîte de dialogue Options . Disponible uniquement dans l'éditeur de texte et pour certaines langues .

Une autre manière de se faire une idée du type d’options de formatage offertes par SSMS consiste à Tools > Customize > Commands > Edit > Add Command... > Formatconsulter la liste des commandes possibles. Rien n'indique qu'il existe une connaissance de la langue réelle, donc il ne saurait pas où insérer des sauts de ligne, ni ajouter des retraits, ni aider avec des parenthèses, etc.

entrez la description de l'image ici

Si vous souhaitez une mise en forme spécifique à la langue pour rendre le code T-SQL existant plus lisible, vous ne tirerez pas grand profit de SSMS et vous devrez rechercher d'autres options.

Aaron Bertrand
la source
1
J'ai eu les mêmes symptômes et le même comportement que ceux décrits par le PO et par Aaron dans SSMS 2016; Cependant, j'ai pu le faire fonctionner correctement. La clé supprimait toutes les commandes liées en Ctrl+K, Ctrl+Dutilisant d'abord le Removebouton, puis suivait le programme en quatre étapes d'Aaron pour lier le clavier, comme défini ci-dessus ( Tools > Options > Environment > Keyboard). Voici une capture d'écran de ma Optionsboîte de dialogue, une fois que tout est configuré: pasteboard.co/GDYkh3h.jpg .
Mass Dot Net
Je ne suis pas du tout certain de savoir pourquoi ce commentaire ne figure pas dans la liste des réponses, car cela me donne des résultats négatifs en faisant ce que vous avez dit.
Kristopher
12

Je ne crois pas que cela soit possible dans SSMS. Un élément Connect a été ouvert pour cette fonctionnalité.

Ce que j’aime personnellement utiliser pour du code SQL mal formaté, c’est l’application Web sur Poor SQL . Il fait un très bon travail de formatage du code SQL selon vos spécifications. Génère même du HTML si vous le souhaitez. Je n'utilise ni le plug-in SSMS ni aucun des autres produits livrables annoncés, mais je saute toujours sur le site pour effectuer le formatage rapide, puis copier / coller directement dans SSMS.

Thomas Stringer
la source
Merci pour le conseil sur Poor SQL. Je vais garder celui-ci dans ma poche arrière à coup sûr!
Kris Gruttemeyer le
3
Un autre bon (également utile pour formater le code pour les blogs) est le prettificateur SQL de Simple-Talk .
Aaron Bertrand
Donc, même si le document de Microsoft dit qu'il peut formater, SSMS ne peut pas?
SQL pauvre a également un plug-in pour Notepad ++. Vous ne savez pas pourquoi vous n'utiliseriez pas le plug-in SSMS. Cela fonctionne très bien maintenant qu’ils ont finalement réussi à faire fonctionner SSMS 2012+.
Jonathan Fite
2

SqlSmash est un outil commercial qui vous permet de formater votre code SQL (et bien plus encore) dans SSMS 2012 et 2014. Le raccourci clavier par défaut est (Ctrl + K, Ctrl + D).
Disclaimer: Je suis le développeur derrière cela.

Tardif
la source
S'il vous plaît ajouter que l'outil n'est pas gratuit.
ypercubeᵀᴹ
Il existe une version communautaire gratuite.
Jason Geiger