Форматування T-SQL в SSMS 2012


39

Відповідно до цього документа Microsoft:

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

Я повинен мати можливість використовувати ctrl + K, а потім ctrl + D для форматування своїх SQL-документів у SQL Server Management Studio 2012, але коли я використовую комбо, я отримую помилку:

Комбінація клавіш (Ctrl + K, Ctrl + D) пов'язана з командою (Формат документа), яка наразі недоступна.

Я намагаюся внести зміни в існуючий документ SQL, який взагалі не має його форматування, що робить його надзвичайно важким для читання. Хтось знає, як зробити команду Формат документа доступною, щоб я міг мати формат SQL для цього коду?


Я думаю, що це твердження Available only in the text editor- це спосіб
написання текстовим

1
@billinkc Я не думаю, що це цілком правильно. Текстовий редактор - це "редактор запитів", що використовується як для Transact-SQL, так і для XML , він просто не є редактором запитів, коли він має справу з XML. Я думаю, що документація трохи надто перспективна, і я прокоментував її як елемент Connect .
Аарон Бертран

Відповіді:


42

Комбінація клавіатур, яку ви шукаєте ( Ctrl+ K, Ctrl+ D), призначена для "форматування", але не в тій мірі, на яку, здається, очікуєте. Це не затискач, він просто використовується для вставки правильного інтервалу та вкладок, як знайдено в Tools > Options > Text Editor > Transact-SQL > General/Tabs- тому якщо ви виділите частину тексту та натисніть комбінацію клавіатури, вона повинна конвертувати вкладки у 4 пробіли (якщо ви вибрали вставку пробіли), застосуйте вказаний тип відступу та ін.

Цей параметр НЕ призначений для збільшення коду для читання - це не функціональність, яку в даний час Management Studio пропонує. Хоча є кілька сторонніх варіантів - деякі є зовнішніми для Management Studio, наприклад:

І в редакторі є додатки для різних рівнів допомоги щодо форматування:

Тепер причина, по якій ви отримуєте повідомлення ...

Комбінація клавіш (Ctrl + K, Ctrl + D) пов'язана з командою (Формат документа), яка наразі недоступна.

... це тому, що SSMS відобразила цю комбінацію клавіш в інший контекст. Те, як ви повинні мати можливість це "виправити" - знову ж таки, воно все одно не буде робити те, що ви хочете, щоб це зробити, навіть якщо "виправлення" спрацювало - виконуючи наступне:

  1. Йти до Tools > Options > Environment > Keyboard
  2. Помістіть курсор у Press shortcut keys:вікно
  3. Натисніть Ctrl+ K, Ctrl+D
  4. Змініть Shortcut currently used by:спадне меню з DataWarehouse DesignerнаText Editor

    введіть тут опис зображення

  5. Натисніть OK

Тепер, це повинно відображати комбінацію клавіатури в текстовому редактор, але Management Studio повертається його після удару OK (ви будете продовжувати отримувати повідомлення про помилку. Так що , я думаю , що проблема полягає в тому , що документація вважає , що ця функціональність існує, але управління Студія знає краще і просто не пропонує цього (і Microsoft, швидше за все, списає це як помилку в документації та виправить це, а не недолік інструменту). Можливо, буде надія в майбутньому, але поки що, це відома і в основному ігнорована проблема . Ви зауважите, що Formattingвкладки, на яку посилається документація , просто немає (хоча вона існує для XML, де працює комбінація клавіатур).

Застосовує відступ та форматування пробілів для мови, вказаної на панелі Форматування мови в розділі « Редактор тексту » діалогового вікна « Параметри» . Доступно лише в текстовому редакторі та лише для певних мов .

Інший спосіб отримати уявлення про тип параметрів форматування, які SSMS пропонує на самому собі, - це перейти Tools > Customize > Commands > Edit > Add Command... > Formatі подивитися список можливих команд там. Ніщо, що вказує на те, що немає відомостей про фактичну мову, тож не було б відомо, куди потрібно вставити розриви рядків або додати додаткові відступи чи допомогти з дужками тощо

введіть тут опис зображення

Якщо ви хочете, щоб форматизація, що залежить від мови, зробила наявний код T-SQL більш читабельним, від SSMS ви не отримаєте багато, і вам потрібно буде шукати інші варіанти.


1
Я відчував ті самі симптоми та поведінку, які були описані ОП, а також Аароном у SSMS 2016; проте мені вдалося змусити його працювати належним чином. Клавішею було видалення всіх команд, пов'язаних Ctrl+K, Ctrl+Dспочатку за допомогою Removeкнопки, а потім дотримуйтесь чотиришагової програми Аарона для прив’язки клавіатури, як визначено вище ( Tools > Options > Environment > Keyboard). Ось скріншот того, як Optionsвиглядає моє діалогове вікно, як тільки все налаштовано: pasteboard.co/GDYkh3h.jpg .
Mass Dot Net

Я зовсім не впевнений, чому цей коментар не вказаний як відповідь, оскільки він спрацьовує для мене, виконуючи те, що ви сказали.
Крістофер

12

Я не вірю, що це можливо в SSMS. Для цієї функції відкрився елемент Connect .

Що я особисто люблю використовувати для погано відформатованого коду SQL, це веб-додаток для бідного SQL . Це справді приємна робота щодо форматування коду SQL відповідно до ваших потреб. Навіть генерує HTML, якщо ви цього хочете. Я не використовую плагін SSMS або будь-які інші результати, які вони рекламують, я завжди просто скачу на сайт, щоб зробити швидке форматування, а потім скопіювати / вставити прямо в SSMS.


Дякуємо за пораду про поганий SQL. Збережу це, докинувшись у моїй задній кишені!
Kris Gruttemeyer

3
Ще одним хорошим (також корисним для форматування коду для блогів) є SQL Prettifier Simple-Talk .
Аарон Бертран

Тож хоча в документі Microsoft сказано, що він може форматувати, SSMS не може?

Бідний SQL також має плагін для Notepad ++. Не впевнений, чому ви б не використовували модуль SSMS. Це чудово працює зараз, коли вони нарешті змусили його працювати з SSMS 2012+.
Джонатан Фійт

6

Встановіть надбудову, яка це робить. Я використовую безкоштовну версію SQL Complete: http://www.devart.com/dbforge/sql/sqlcomplete/, яка пропонує деякі основні функції форматування SQL. Він інтегрується з SSMS та використовує Ctrl + K, D.


безкоштовна онлайн версія sql-format.com
Іман Абіді

2

SqlSmash - це комерційний інструмент, який дозволяє форматувати свій SQL (та багато іншого) у SSMS 2012 та 2014 р. Комбінація клавіатурних скорочень (Ctrl + K, Ctrl + D).
Відмова: Я за цим розробником.


Будь ласка, додайте, що інструмент не є безкоштовним.
ypercubeᵀᴹ

Є безкоштовна версія спільноти.
Джейсон Джейгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.