Автор: 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 теперь есть встроенный форматировщик. Меня не слишком беспокоят проблемы, с которыми я столкнулся, поскольку это всё ещё предварительная версия. Полезно иметь это сейчас, и я ожидаю, что в ближайшем будущем эта функция улучшится и станет более удобной для использования.




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