Форматирование SQL в SQL Server Management Studio

В Visual Studio и других IDE вы можете легко автоматически форматировать код с помощью сочетания клавиш, через меню или автоматически по мере ввода.

Мне было интересно, есть ли еще способ включить эту стандартную функцию в SQL Server Management Studio?

Я работаю с некоторыми хранимыми процессами большого размера, которые представляют собой искаженный беспорядок плохо отформатированного SQL, и было бы неплохо, если бы я мог просто выбрать «Выбрать все -> Форматировать SQL»


person lomaxx    schedule 31.12.2008    source источник
comment
SQLinForm предоставляет функцию горячих клавиш   -  person Guido    schedule 16.09.2015
comment
теперь у него есть бесплатное онлайн-средство форматирования: sqlinform.com/sql_formatter_online.html   -  person Guido    schedule 26.09.2015
comment
В Интернете вы можете использовать devtoolsonline20190908040816.azurewebsites.net/DevTools/   -  person GomuGomuNoRocket    schedule 10.09.2019
comment
Обновлен Q, чтобы быть по теме   -  person Andrew    schedule 13.02.2020


Ответы (3)


Поздний ответ, но, надеюсь, стоящий: Poor Man's T-SQL Formatter является открытым исходным кодом (бесплатно ) Модуль форматирования T-SQL с полной поддержкой пакетов / сценариев T-SQL (любой DDL, любой DML), подключаемый модуль SSMS, модуль массового форматирования командной строки и другие параметры.

Он доступен для немедленного / онлайн-использования на http://poorsql.com, и только сегодня был переведен на "версию 1.0" (это находился в бета-версии несколько месяцев), только что получив поддержку операторов MERGE, предложений OUTPUT и других привередливых вещей.

Надстройка SSMS позволяет вам установить собственную горячую клавишу (по умолчанию: Ctrl - K, Ctrl - F , чтобы соответствовать Visual Studio) и форматирует весь скрипт или только код, который вы выбрали / выделили, если таковой имеется. Форматирование вывода можно настроить.

В SSMS 2008 он прекрасно сочетается со встроенным интеллектом, эффективно обеспечивая более или менее ту же базовую функциональность, что и SQL Prompt Red Gate (SQL Prompt, конечно, имеет дополнительные вещи, такие как фрагменты, быстрое создание сценариев объектов, так далее).

Обратная связь / запросы функций более чем приветствуются, пожалуйста, дайте им шанс, если у вас будет такая возможность!

Раскрытие информации: это, вероятно, уже очевидно, но я написал эту библиотеку / инструмент / сайт, поэтому этот ответ также является бессовестным саморекламой :)

person Tao    schedule 25.08.2011
comment
Просто попробовал, настройки опций сделали это настоящим победителем, и я попробовал только один веб-сайт (работа ограничивает загрузку, но я попробую это дома позже) - person Stephen; 12.06.2012
comment
И работает даже для SSMS2012, что здорово! Вам просто нужно перезапустить SSMS. - person Johnny_D; 04.03.2014
comment
На SQL Server 2012 сочетание клавиш Ctrl + K, Ctrl + F по умолчанию не работает, поскольку в нем говорится, что оно уже привязано к Format Selection. Сработало после изменения с DataWarehouse Designer::Ctrl+k, Ctrl+f на Global::Ctrl+k, Ctrl+j. - person Marco Lackovic; 27.04.2015
comment
см. подсказки для установок SSMS 2014 stackoverflow.com/questions/23303026/ - person Alexander Sigachov; 14.05.2015
comment
Это должен быть принятый ответ, этот плагин отличный. - person Leith; 03.12.2015
comment
Добавляя к комментарию Кирге, обязательно найдите в списке команд PoorMansTSqlFormatterSSMSAdIn, а не просто Format, он не хочет отображаться только с Format для SSMS2014, когда я его набираю. Измените его, чтобы иметь привязку (Global) вместо версии Edit.FormatSelection. - person SimpsOff; 03.05.2016
comment
Отличный инструмент, но несовместимый с RTM 2016 - person dmeglio; 15.06.2016
comment
не могли бы вы обновить свой ответ, плагин PoorMan SQL Formatter больше не работает с SSMS 2016. - person user1693885; 21.07.2017
comment
@ dman2306 - уже доступен установщик, совместимый с 2016 (и 17) годами. - person Tao; 18.10.2017
comment
Мех, когда я пытаюсь установить это, он требует, чтобы был установлен .Net 2.0, который я не могу установить отдельно на машине Win 10. Грусть. - person Jordan; 31.05.2018
comment
@Jordan: в Windows 10 .Net Framework 3.5 SP1 (включая .Net 2.0) является дополнительной функцией Windows, которую можно включить в разделе «Включение или отключение функций Windows на экране / функциональности». Он называется .NET Framework 3.5 (включает .NET 2.0 и 3.0) и находится в верхней части списка дополнительных функций - вам это не подходит? (да, извините, требовать .Net 2.0 в наши дни и возраст, вероятно, неразумно ... Созданная проблема github.com/TaoK/PoorMansTSqlFormatter/issues/199 для отслеживания) - person Tao; 01.06.2018
comment
Я бы сказал спасибо и за то, что проголосовал за ваш комментарий как полезный, но переполнение стека мне не позволяет. Попробуем сделать это, даже не осознавая этого. Хм? - person Jordan; 08.06.2018
comment
Я не мог заставить это работать с SSMS 17.9.1. Кажется, он не добавлял расширение, он добавлял в VS, однако я удалил его, потому что не хотел рисковать столкновениями клавиатуры там. Мне удалось добавить Poor Man's в Notepad ++, кажется, это выглядит разумным для формата, также есть некоторые параметры конфигурации, которые могут помочь отформатировать то, что вы предпочитаете. - person JabberwockyDecompiler; 25.04.2019
comment
Я пробовал расширение в SSMS, но оно выдает ошибку каждый раз, когда я открываю SSMS. Я обнаружил ту же самую ошибку в Интернете, но она указана как закрытая, а года - 2017,2018. Сейчас 2019 год, и я использую SSMS v18.2. github.com/TaoK/PoorMansTSqlFormatter/issues/187 - person Code Novice; 10.09.2019
comment
ApexSQL для победы ... установил ... прекрасно работает. - person Code Novice; 10.09.2019

Есть особый трюк, который я обнаружил случайно.

  1. Выберите запрос, который хотите отформатировать.
  2. Ctrl + Shift + Q (это откроет ваш запрос в конструкторе запросов)
  3. Тогда просто иди ОК, вуаля! Дизайнер запросов отформатирует ваш запрос за вас. Предостережение: вы можете делать это только для операторов, а не для процедурного кода, но это лучше, чем ничего.
person Justin    schedule 16.05.2012
comment
Хороший совет. К сожалению, хотя этот метод действительно работает, imho он делает довольно плохую работу. Но, по крайней мере, есть что-то встроенное. - person John Homer; 12.07.2012
comment
он отформатирован, но не так, как ожидалось. В любом случае что-то лучше, чем ничего :) ..... Спасибо за подсказку. - person Jaini Naveen; 27.02.2013
comment
Что ж, насколько я могу судить, хотя на самом деле он не выполняет свою работу наилучшим образом, он что-то делает, и он готов к работе, и вам не нужно за это платить. Но только один человек подумал отметить его как полезное. Я действительно поражен, я думал, что этот привязан ;-) - person Justin; 27.02.2013
comment
Я обнаружил, что аналогично запросы форматируются при вставке в новое представление. Но это намного чище ... +1. - person Feckmore; 19.03.2014
comment
это будет работать только в том случае, если содержимое запроса можно представить графически. - person kbvishnu; 17.12.2014
comment
ВНИМАНИЕ! Он не только не будет работать для сложных запросов (которые требуют форматирования), но также, если вы выберете сложный запрос и нажмете Ctrl + Shift + Q в Management Studio v 11.0.6020, он ВЫПОЛНИТЕЛЬНО, возможно, потеря части вашей работы. (несмотря на функцию восстановления.) - person Mike Nakis; 04.01.2017
comment
Так что, пока я не установлю какой-нибудь плагин, я могу сэкономить время. Благодарю. - person dresh; 21.03.2017

Azure Data Studio - бесплатная и от Microsoft - предлагает автоматическое форматирование (ctrl + shift + p при редактировании - ›форматировать документ). Дополнительные сведения об Azure Data Studio здесь.

Хотя это не SSMS, он отлично подходит для написания запросов, он бесплатный и официальный продукт от Microsoft. Он даже кроссплатформенный. Краткая история: просто переключитесь на Azure Data Studio, чтобы писать запросы!

Обновление: на самом деле Azure Data Studio в некотором роде рекомендуется Microsoft для написания запросов (source)

Используйте Azure Data Studio, если вы: [..] в основном редактируете или выполняете запросы.

person stefan.at.wpf    schedule 26.12.2020