Формат Transact-SQL в расширении MSSQL для Visual Studio Code

Согласованное форматирование упрощает Transact-SQL (T-SQL) для чтения, проверки и обслуживания, особенно если несколько пользователей участвуют в одной базе кода. Расширение MSSQL для Visual Studio Code включает встроенный SQL форматировщик (Preview), который можно запускать по требованию, настраивать автоматическое форматирование при сохранении и настраивать через настройки Visual Studio Code.

Функциональность форматирования T-SQL в расширении MSSQL основана на ScriptDOM — открытой .NET-библиотеке, которая анализирует T-SQL и генерирует скрипты на основе абстрактных синтаксических деревьев.

Формат по запросу

Вы можете отформатировать T-SQL в любом окне редактора. Форматировщик работает со всем документом или только с выбранным текстом.

Для форматирования T-SQL по требованию используйте один из следующих методов:

  • Контекстное меню: Кликните правой кнопкой мыши в окне редактора T-SQL и выберите Формат документа или Выбор формата.

  • Палитра команд: запустить формат документа или выбор формата.

  • Клавиша клавиатуры: для форматирования документа нажмите Shift+Alt+F на Windows и Linux или Shift+Option+F на macOS. Для выбора формата нажмите Ctrl+K, Ctrl+F на Windows и Linux или Cmd+K, Cmd+F на macOS.

Форматирование при сохранении

В Visual Studio Code стандартная настройка редактора управляет форматом при сохранении, а не отдельная настройка форматировщика MSSQL.

Используйте следующие настройки в файле settings.json Visual Studio Code, чтобы автоматически форматировать код T-SQL при каждом сохранении файла:

{
  "[sql]": {
    "editor.formatOnSave": true
  }
}

Настройка параметров форматирования

Настройте форматирование в интерфейсе Visual Studio Code Settings или в пользовательском или рабочем пространствеsettings.json.

В редакторе настроек выполните поиск Mssql>Format , чтобы увидеть доступные варианты. В settings.json используйте соответствующие настройки mssql.format.*.

  • Форматировщик предварительного просмотра по умолчанию включён. Его опции используют пространство имён mssql.format.options.*.

  • Пять существующих настроек средства форматирования по-прежнему доступны, когда включено средство форматирования предварительного просмотра. Форматировщик предварительного просмотра добавляет настройки mssql.format.options.*.

Скриншот настроек форматера SQL в редакторе настроек Visual Studio Code Settings.

Поддерживаемые параметры

В таблицах сначала перечислены существующие настройки средства форматирования, а затем — настройки средства форматирования для предварительного просмотра.

Существующие настройки форматора

Setting Тип По умолчанию Description
mssql.format.alignColumnDefinitionsInColumns bool false Выровняйте определения столбцов по столбцам.
mssql.format.datatypeCasing enum none Форматируйте типы данных как uppercase, lowercase, или none (не отформатировано).
mssql.format.keywordCasing enum none Форматируйте ключевые слова как uppercase, lowercase, или none (не форматировано).
mssql.format.placeCommasBeforeNextStatement bool false Размещайте запятые в начале каждого элемента в списке, например , mycolumn2, вместо в конце, например mycolumn1,.
mssql.format.placeSelectStatementReferencesOnNewLine bool false Размещайте ссылки в инструкции SELECT на отдельных строках. Для SELECT C1, C2 FROM T1, и C1, и C2 расположены на отдельных линиях.

Просмотр настроек формировщика

Эти mssql.format.options.* настройки добавляются поверх существующих настроек форматера при включении форматера предварительного просмотра.

General

Setting Тип По умолчанию Description
mssql.format.enablePreviewFormatter bool true Используйте SQL-форматировщик (предварительный просмотр).
mssql.format.showParseErrorNotification bool true Показывайте уведомление, когда форматор не может полностью разобрать T-SQL.
mssql.format.options.sqlVersion enum sql170 Версия T-SQL использовалась для разбора и генерации отформатированных скриптов.
mssql.format.options.sqlEngineType enum all Тип ядра базы данных, используемый для разбора и генерации форматированных скриптов. Допустимые значения: all, standalone и sqlAzure.

Выравнивание

Setting Тип По умолчанию Description
mssql.format.options.alignClauseBodies bool true Выровняйте тела FROM, WHERE, GROUP BY и аналогичных конструкций.
mssql.format.options.alignColumnDefinitionFields bool true Выровняйте поля определения столбца, такие как имя, тип и ограничения.
mssql.format.options.alignSetClauseItem bool true Выравнивание SET элементов предложения в UPDATE инструкциях.

Paths

Setting Тип По умолчанию Description
mssql.format.options.allowExternalLanguagePaths bool true Разрешить внешнему языковому контенту использовать пути к файлам.
mssql.format.options.allowExternalLibraryPaths bool true Разрешить внешнему контенту библиотеки использовать пути к файлам.

Formatting

Setting Тип По умолчанию Description
mssql.format.options.asKeywordOnOwnLine bool true Поместите AS на отдельной строке.
mssql.format.options.keywordCasing enum uppercase Стиль регистра ключевых слов. Допустимые значения: uppercase, lowercase и pascalCase.
mssql.format.options.preserveComments bool true Сохранение комментариев во время форматирования.
mssql.format.options.numNewlinesAfterStatement int 1 Количество разрывов строк после каждого утверждения, от 0 до 5.

Отступы

Setting Тип По умолчанию Description
mssql.format.options.indentSetClause bool false Добавить отступ для условия SET в инструкциях UPDATE.
mssql.format.options.indentViewBody bool false Сделайте отступ для текста VIEW.

Многострочный

Setting Тип По умолчанию Description
mssql.format.options.multilineInsertSourcesList bool true INSERT источники как многострочные.
mssql.format.options.multilineInsertTargetsList bool true INSERT столбцы как многострочные.
mssql.format.options.multilineSelectElementsList bool true SELECT столбцы как многострочные.
mssql.format.options.multilineSetClauseItems bool true SET элементы в несколько строк.
mssql.format.options.multilineViewColumnsList bool true VIEW столбцы как многострочные.
mssql.format.options.multilineWherePredicatesList bool true WHERE предикаты как многострочные.

Новая строка

Setting Тип По умолчанию Description
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true Новая строка перед закрытием скобок в многострочном списке.
mssql.format.options.newLineBeforeFromClause bool true Новая фраза перед FROM пунктом.
mssql.format.options.newLineBeforeGroupByClause bool true Новая фраза перед GROUP BY пунктом.
mssql.format.options.newLineBeforeHavingClause bool true Новая фраза перед HAVING пунктом.
mssql.format.options.newLineBeforeJoinClause bool true Новая фраза перед JOIN пунктом.
mssql.format.options.newLineBeforeOffsetClause bool true Новая фраза перед OFFSET пунктом.
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false Новая строка перед открытой скобкой в многострочном списке.
mssql.format.options.newLineBeforeOrderByClause bool true Новая фраза перед ORDER BY пунктом.
mssql.format.options.newLineBeforeOutputClause bool true Новая фраза перед OUTPUT пунктом.
mssql.format.options.newLineBeforeWhereClause bool true Новая фраза перед WHERE пунктом.
mssql.format.options.newLineBeforeWindowClause bool true Новая фраза перед WINDOW пунктом.
mssql.format.options.newlineFormattedCheckConstraint bool false Ограничение, отформатированное с помощью CHECK новой строки.
mssql.format.options.newLineFormattedIndexDefinition bool false Определение индекса в формате Newline.

Spacing

Setting Тип По умолчанию Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true Пробел между типом данных и скобками, например VARCHAR (255).
mssql.format.options.spaceBetweenParametersInDataType bool true Пространство между параметрами в типах данных.

Пример файлов настроек

{
  "mssql.format.options.keywordCasing": "lowercase",
  "mssql.format.options.alignClauseBodies": false,
  "mssql.format.options.numNewlinesAfterStatement": 2,
  "[sql]": {
    "editor.formatOnSave": true
  }
}

Установите средство форматирования по умолчанию

Чтобы установить расширение MSSQL по умолчанию, выберите Configure Default Formatter...>SQL Server (mssql) или добавить следующую конфигурацию вsettings.json:

{
  "[sql]": {
    "editor.defaultFormatter": "ms-mssql.mssql"
  }
}