25.6.26

Форматирование T-SQL запросов в SSMS 22.7

Автор: Chad Callihan , SQL Formatting in SSMS 22.7

Форматирование кода может быть деликатной темой. Иногда существуют чёткие правила, определяющие правильное и неправильное, а иногда их нет. Пробелы против табуляции, что выбрать?

Как ни удивительно, но в SQL Server Management Studio никогда не было встроенного средства форматирования SQL. Пользователям всегда приходилось пользоваться сторонними инструментами или форматировать вручную. Но с выходом последней версии SSMS 22.7 форматирование SQL наконец стало встроенной функцией.

Давайте рассмотрим несколько примеров и посмотрим, как она работает.

Примеры использования форматирования SQL

Начнём с простого запроса:

select * from sys.databases where create_date > getdate()-30 and state_desc = 'ONLINE'

Ничего особенного. Если мы хотим отформатировать этот запрос, мы можем либо щёлкнуть правой кнопкой мыши в окне запроса и выбрать Format SQL (Preview):

Либо нажать Edit > Advanced > Format SQL (Preview):

Либо использовать сочетание клавиш Ctrl+K, Ctrl+Q.

Результат будет следующим:

SELECT * FROM sys.databases WHERE create_date > getdate() - 30 AND state_desc = 'ONLINE';

Выглядит хорошо. А что насчёт более сложного запроса? Я взял этот запрос из предыдущей статьи в блоге, и он не был отформатирован так же успешно:

SELECT SUSER_SNAME(owner_sid) AS DBOWNER, d.name AS DATABASENAME FROM sys.server_principals r INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id INNER JOIN sys.server_principals p ON p.principal_id = m.member_principal_id INNER JOIN sys.databases d ON suser_sname(d.owner_sid) = p.name WHERE is_trustworthy_on = 1 AND d.name NOT IN ('msdb') AND r.type = 'R' AND r.name = N'sysadmin'; GO

Я оставил его как есть и попробовал отформатировать, чтобы посмотреть, что получится. Результатом стала ошибка:

Не удалось отформатировать содержимое редактора SQL. Подробности см. в журнале «Расширения».

Запрос выполняется успешно, так что дело не в том, что запрос недействителен. Форматировщик SQL всё ещё находится в предварительной версии (preview), так что я не могу ещё на него жаловаться :)

Могло быть лучше, могло быть хуже

Приятно, что в SSMS теперь есть встроенный форматировщик. Меня не слишком беспокоят проблемы, с которыми я столкнулся, поскольку это всё ещё предварительная версия. Полезно иметь это сейчас, и я ожидаю, что в ближайшем будущем эта функция улучшится и станет более удобной для использования.



Комментариев нет:

Отправить комментарий