Visual Studio Code 用の MSSQL 拡張機能で Transact-SQL を書式設定する

一貫性のある書式設定により、特に複数のユーザーが同じコードベースに貢献する場合に、Transact-SQL (T-SQL) の読み取り、確認、保守が容易になります。 Visual Studio CodeのMSSQL拡張機能には、オンデマンドで実行できる組み込みSQLフォーマッターが含まれており、セーブ時の自動フォーマット設定やVisual Studio Code設定によるカスタマイズが可能です。

MSSQL拡張機能のT-SQLフォーマット機能は、T-SQLを解析し抽象構文木に基づいてスクリプトを生成するオープンソースの.NETライブラリScriptDOMに基づいて構築されています。

オンデマンド形式

どのエディタウィンドウでもT-SQLをフォーマットできます。 フォーマッターは文書全体、または選択したテキストだけに動作します。

T-SQLをオンデマンドでフォーマットするには、以下のいずれかの方法を用いてください。

  • コンテキストメニュー:T-SQLエディタのウィンドウで右クリックし、「 ドキュメントフォーマット 」または 「フォーマット選択」を選択します。

  • コマンドパレット: Document Format または Format Selection を実行する。

  • キーボードショートカット:ドキュメントフォーマットは、WindowsとLinuxではShift+Alt+F、macOSではShift+Option+Fを押してください。 フォーマットの選択には、Windows と Linux では +K、Ctrl+F を、macOS では Cmd+K、Cmd+F を押してください。

保存時の書式

Visual Studio Codeでは、標準のエディタ設定が保存時にフォーマットを制御しており、専用のMSSQLフォーマタ設定ではありません。

ファイルを保存するたびにT-SQLを自動的にフォーマットするために、Visual Studio Code settings.jsonファイルの以下の設定を使ってください。

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

書式設定オプションを構成する

Visual Studio Code設定UIやユーザー、ワークスペースsettings.jsonでフォーマットを設定してください。

設定エディターで「 Mssql>Format 」を検索して利用可能なオプションを確認してください。 settings.jsonでは対応するmssql.format.*設定を使いましょう。

サポートされている設定

以下の設定でSQLフォーマッターを設定できます。

General

Setting タイプ Default Description
mssql.format.showParseErrorNotification bool true フォーマッターがT-SQLを完全に解析できない場合は通知を表示します。
mssql.format.options.sqlVersion 列挙型 sql170 T-SQLバージョンは、解析やフォーマット済みスクリプトの生成に使われていました。
mssql.format.options.sqlEngineType 列挙型 all データベース エンジンタイプ フォーマット済みスクリプトの解析および生成に使用されます。 有効な値は、 all、 standalone、および sqlAzureです。

位置合わせ

Setting タイプ Default 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 句項目を整列します。
mssql.format.options.clauseBodyAlignment 列挙型 aligned 句本体はキーワードと同じ行に aligned 保つか、indented のように次の行に配置してください。

ケースと識別子

Setting タイプ Default Description
mssql.format.options.builtInFunctionCasing 列挙型 preserve GETDATEやCOALESCEなど、サポートされる組み込み関数名のケーススタイル。 有効な値は、preserve、uppercase、lowercase、および pascalCase です。
mssql.format.options.identifierBracketing 列挙型 preserve 識別子の周りにオプションの角括弧を保持、追加、または削除してください。 有効な値は、 preserve、 includeBrackets、および excludeBracketsです。 必要な括弧は保持されます。
mssql.format.options.identifierCasing 列挙型 preserve オブジェクト識別子のケーススタイル。 有効な値は、preserve、uppercase、lowercase、および pascalCase です。
mssql.format.options.keywordCasing 列挙型 uppercase キーワードの大文字/小文字の表記スタイル。 有効な値は、 uppercase、 lowercase、および pascalCaseです。

経路

Setting タイプ Default Description
mssql.format.options.allowExternalLanguagePaths bool true 外部言語コンテンツがファイルパスを使えるようにします。
mssql.format.options.allowExternalLibraryPaths bool true 外部ライブラリのコンテンツがファイルパスを使用できるようにします。

Formatting

Setting タイプ Default Description
mssql.format.options.asKeywordOnOwnLine bool true ASを独自の行に配置します。
mssql.format.options.columnAliasStyle 列挙型 asKeyword 列のエイリアスは AS、等号、または元の構文でフォーマットします。 有効な値は、 asKeyword、 equalsSign、および preserveです。
mssql.format.options.commaPlacement 列挙型 trailing リスト項目の最後にはカンマを付けてください(trailing)または次の項目の先頭にはleading。
mssql.format.options.leadingCommaSpaceCount 整数 1 先頭のカンマの後にあるスペース数。 有効値は 0 または 1 です。
mssql.format.options.persistTrailingGo bool false 元のスクリプトの末尾にある GO バッチ区切りを保持してください。
mssql.format.options.preserveComments bool true 書式設定中にコメントを保持します。
mssql.format.options.terminateBlockStatements bool false BEGIN...END ブロックと TRY...CATCH ブロックの後にセミコロンを追加します。

[インデント幅]

Setting タイプ Default Description
mssql.format.options.indentSetClause bool false UPDATE ステートメント内の SET 句をインデントします。
mssql.format.options.indentViewBody bool false VIEW 本文をインデントします。

Multiline

Setting タイプ Default Description
mssql.format.options.multilineGroupByElementsList bool false 要素 GROUP BY 多行リストとしてフォーマットしてください。
mssql.format.options.multilineHavingPredicatesList bool true AND または OR で区切られた述語 HAVING を複数行にわたって整形します。
mssql.format.options.multilineInsertSourcesList bool true ソース INSERT マルチラインリストとしてフォーマットしてください。
mssql.format.options.multilineInsertTargetsList bool true INSERT列を多行リストとしてフォーマットしてください。
mssql.format.options.multilineInValuesList bool false IN述語の値をマルチラインリストとしてフォーマットします。
mssql.format.options.multilineNestedFunctionCalls bool false ネストされた関数呼び出しはそれぞれインデントした別の行に整形し、単独の関数呼び出しは1行のままにします。
mssql.format.options.multilineOrderByElementsList bool false 要素 ORDER BY 多行リストとしてフォーマットしてください。
mssql.format.options.multilinePartitionByElementsList bool false ウィンドウ仕様の要素 PARTITION BY マルチラインリストとしてフォーマットできます。
mssql.format.options.multilineProcedureParametersList bool false 手順と関数パラメータを別々のラインでフォーマットします。
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 述語を複数行のリスト形式でフォーマットします。
mssql.format.options.multilineWithOptionsList bool false WITH と OPTION の clause 値を別々の行に表示できるようになりました。

新しい行

Setting タイプ Default Description
mssql.format.options.newLineAfterJoinKeyword bool true JOINキーワードの後に新しい行に結合テーブルソースを配置します。
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.newLineBeforeOnClause bool true 新しい行にジョインの ON 節を置きます。
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 インラインインデックス定義の UNIQUE、 INCLUDE、 WHERE 部分を別々の行に配置します。

ステートメントとバッチの間隔

Setting タイプ Default Description
mssql.format.options.numNewlinesAfterBatches 整数 1 各 GO バッチセパレーターの後に 0 から 5までのラインブレークの数があります。
mssql.format.options.numNewlinesAfterBatchStatement 整数 2 バッチ内の各トップレベル ステートメントの後に入れる改行数を、0 から 5 までの範囲で指定します。
mssql.format.options.numNewlinesAfterStatement 整数 1 各文の後に折行数が 0 から 5まであります。

Spacing

Setting タイプ Default Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true 例えば、データ型とその括弧の間にスペースを挿入します。例えば VARCHAR (255)。
mssql.format.options.spaceBetweenParametersInDataType bool true 例えば、データ型のパラメータ間にスペースを挿入します。例えば DECIMAL (10, 2)。

設定ファイルの例

{
  "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"
  }
}