web-dev-qa-db-fra.com

Formatage de T-SQL dans SSMS 2012

Selon ce document Microsoft:

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

Je suis censé pouvoir utiliser ctrl + K puis ctrl + D pour formater mes documents SQL dans SQL Server Management Studio 2012 mais lorsque j'utilise ce combo, j'obtiens l'erreur:

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

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

39
user11512

La combinaison de claviers que vous recherchez (Ctrl+KCtrl+D) est pour le "formatage" - mais pas dans la mesure où vous semblez le prévoir. Ce n'est pas un joli, il est juste utilisé pour insérer un espacement et des tabulations corrects comme dans Tools > Options > Text Editor > Transact-SQL > General/Tabs - donc si vous mettez en surbrillance une partie du texte et appuyez sur la combinaison de touches, il est censé convertir les tabulations en 4 espaces (si vous avez sélectionné insérer des espaces), appliquer le type de retrait que vous avez spécifié, etc.

Cette option n'est PAS destinée à rendre le code plus lisible - ce n'est pas une fonctionnalité que Management Studio propose actuellement en mode natif. Bien qu'il existe plusieurs options tierces - certaines sont externes à Management Studio, comme:

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 pas actuellement disponible.

... parce que SSMS a mappé cette combinaison de touches dans un contexte différent. La façon dont vous devriez être en mesure de "corriger" cela - encore une fois, il ne ferait toujours pas ce que vous voulez qu'il fasse, même si le "correctif" fonctionnait - est en procédant comme suit:

  1. Aller à Tools > Options > Environment > Keyboard
  2. Placez votre curseur dans le Press shortcut keys: boîte
  3. Frappé Ctrl+KCtrl+D
  4. Changer la Shortcut currently used by: liste déroulante de DataWarehouse Designer à Text Editor

    enter image description here

  5. Appuyer sur OK

Maintenant, c'est supposé pour mapper la combinaison de clavier à l'éditeur de texte, mais Management Studio la rétablit après avoir cliqué sur OK (vous continuerez à obtenir le message d'erreur. Donc, je pense que le problème est que la documentation pense que cette fonctionnalité existe, mais Management Studio le sait mieux et ne la propose tout simplement pas (et Microsoft l'écrira probablement comme un bogue dans la documentation et la corrigera plutôt que comme une lacune de l'outil). espérer dans le futur mais, pour l'instant, c'est un problème connu et largement ignoré . Vous remarquerez que l'onglet Formatting qui la documentation se réfère à 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 Formatage de la langue dans l'éditeur de texte section de la boîte de dialogue Options . Disponible uniquement dans l'éditeur de texte et uniquement pour certaines langues.

Une autre façon de se faire une idée du type d'options de formatage qu'offre SSMS en natif est d'aller à Tools > Customize > Commands > Edit > Add Command... > Format et regardez la liste des commandes possibles. Rien qui indique qu'il existe une connaissance de la langue réelle, donc il ne saurait pas où insérer des sauts de ligne ou ajouter des retraits supplémentaires ou aider avec les parenthèses, etc.

enter image description here

Si vous voulez que la mise en forme spécifique à la langue rende le code T-SQL existant plus lisible, vous n'obtiendrez pas beaucoup de SSMS et vous devrez rechercher d'autres options.

42
Aaron Bertrand

Je ne pense pas que cela soit possible dans SSMS. Il y avait un élément de connexion 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 pas le plug-in SSMS ou tout autre produit livrable dont ils font la publicité, je saute toujours sur le site pour effectuer le formatage rapide, puis copier/coller directement dans SSMS.

12
Thomas Stringer

Installez un module complémentaire qui fait cela. J'utilise l'édition gratuite de SQL Complete: http://www.devart.com/dbforge/sql/sqlcomplete/ qui propose certains de base Fonctionnalité de formatage SQL. Il s'intègre à SSMS et utilise Ctrl + K, D.

6
Robert Niestroj

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

2
Latish