【VSCode】SQL Server の開発環境を整える

## 概要
Visual Studio Code (以下、VSCode) では、SQL ファイルを扱うことができます。
しかしデフォルトのままでは、下記の点がとても不便に感じます。

* クエリ入力時のサジェスト表示がない
* クエリをフォーマットする機能がない
* テーブル名やカラム名のスペルミスがあるかがわからない

そこで、何か拡張機能はないか調べてみました。

[Marketplace で"SQL" と検索した結果](https://marketplace.visualstudio.com/search?term=SQL&target=VSCode&category=All%20categories&sortBy=Relevance)

いくつか候補はありますが、普段SQL Server を使っているので、今回はその環境を作りたいと思います。



## 検証環境
OS | VSCode のバージョン | 備考
--- | :---: | ---
macOS Sierra | 1.12.1 | OpenSSL, .Net Core 設定済み

※2017/5/14 頃のデータを記載しています。なお1.18.1 でも動くことを確認できました。

## セットアップ手順
VSCode の拡張機能メニューから"mssql" をインストールすれば完了です。必要機能が一つにまとまっているのでとても簡単です(#^ ^#)

"mssql" はSQL Server 用の拡張機能で、Microsoft が作っています。
詳細は下記リンクをご覧ください。

[mssql - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql)

※下記のリンクに、インストール時の注釈があります。動かない場合は、こちらをご確認ください。  
[Use Visual Studio Code to create and run Transact-SQL scripts for SQL Server](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-develop-use-vscode) 



## 使い方
### サジェストを表示したい
SQL ファイル上で、それっぽく入力すると表示されるようになります。  

すぐ表示したい場合は、下記のコマンドを試してみてください。

OS | サジェスト表示のコマンド
--- | ---
macOS | ```controll``` + ```space```

※個人設定によって異なる場合があると思います。詳細はコマンド一覧をご確認ください。


### （全）フォーマットしたい
右クリックメニューの「Format Document 」か下記コマンドでフォーマットできます。

OS | フォーマットのコマンド
--- | ---
macOS | ```shift``` + ```alt``` + ```F```


### SQL Server の接続周り
#### SQL Server への接続

```
MS SQL: Connect
```
上記のコマンドを入力し、ガイダンスに従うと接続できます。

接続情報は、VSCode のユーザー設定に保存されます。
下記のコマンドを入力すると接続情報の編集等ができます。

```
MS SQL: ManageProfiles
```
使い方の詳細は、下記をご覧ください。

[Manage Connection Profiles · Microsoft/vscode-mssql Wiki · GitHub](https://github.com/Microsoft/vscode-mssql/wiki/manage-connection-profiles)

#### SQL Server の接続解除
```
MS SQL: Disconnect
```


### クエリ関連
#### 新規作成
```
MS SQL: New Query
```
DB に接続しているため、テーブル名等の候補が表示されます。

表示されない場合は、下記のコマンドでサジェストを更新してください。

```
MS SQL: Refresh Intellisense Cache
```

それでもうまくいかない場合は、クエリを小文字で書いてみてください（試した感じですが、小文字だと出てきました）

``` sql
select * 
from hoge
```

#### クエリの実行
```
MS SQL: Run Query
```

あるいは右クリックメニューの```Execute Query``` でも実行できます。

#### 実行中のクエリの中断
```
MS SQL: Cancel Query
```

#### データベースの切り替え
```
MS SQL: Use Database
```



## 終わりに
VSCode + mssql でかなり便利になりました。

より高性能なツールとしてSQL Server Management Studio がありますが、Windows でしか使えず、さらに起動が重たくなりがちです。

なので軽くやるだけならば、VSCode + mssql を使ってみるのも良さそうです。



## 付録（コマンド一覧）
コマンド名 | 説明
--- | ---
cancelQuery | クエリの実行をキャンセルします。
connect | サーバーに接続します
disconnect | サーバーとの接続を解除します
manageProfiles | サーバーとの接続情報の編集等ができます。[詳細はこちら](https://github.com/Microsoft/vscode-mssql/wiki/manage-connection-profiles)
newQuery | サーバーに接続した状態で、クエリを新規作成します。
rebuildIntellisSenseCache | インテリセンス内容を更新します
runQuery | クエリを実行します。
showGettingStarted | チュートリアルページを表示します
useDatabase | データベースを選択します



## 参考文献
* [mssql - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql) (2017/05/14)
* [Use Visual Studio Code to create and run Transact-SQL scripts for SQL Server](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-develop-use-vscode) (2017/05/14)
* [Home · Microsoft/vscode-mssql Wiki · GitHub](https://github.com/Microsoft/vscode-mssql/wiki) 

※下書きブログの[【VSCode】SQL Server の開発環境を整える](http://tshion.webcrow.jp/itlog/index.html?id=20170514133712)から転記しています。何かあったらこっちも更新します。