Docker の SQL Server 2019 に VSCode で接続

Docker 上の SQL Server 2019 に、VSCode で接続しクエリーを実行してみた。
自分用メモ。

# 手順

下記のチュートリアルに従っていけばOK。

[Visual Studio Code を使用して Transact-SQL スクリプトを作成して実行する](https://docs.microsoft.com/ja-jp/sql/visual-studio-code/sql-server-develop-use-vscode?view=sql-server-ver15)

# 環境

Docker と SQL Server 2019, VSCode の環境

[Docker で SQL Server 2019 をお試し](https://qiita.com/rex0220/items/4cb635ef867245704926)

# VSCode に mssql 拡張機能をインストール

>1.Visual Studio Code で、 [表示] > [コマンド パレット] を選択する、Ctrl + Shift + P を押す、または F1 を押して [コマンド パレット] を開きます。
2.[コマンド パレット] で、ドロップダウンから [拡張機能:拡張機能のインストール] を選択します。
3.[拡張機能] ウィンドウで、「mssql」と入力します。
4.[SQL Server (mssql)] 拡張機能を選択し、 [インストール] を選択します。
 mssql 拡張機能をインストールする
5.インストールが完了したら、 [再読み込み] を選択して拡張機能を有効にします。

<img width="286" alt="2019-11-20_16h14_58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/387e60cb-0af9-abc6-8568-329056b1c959.png">



# VSCode に、SQL Server ツールをインストール

>SQL ファイルを作成するか開く
mssql 拡張機能では、言語モードが SQL に設定されている場合に、コード エディターで mssql コマンドと T-SQL IntelliSense を有効にできます。
1.[ファイル] > [新しいファイル] を選択するか、Ctrl + N を押します。 Visual Studio Code では、既定で新しいプレーン テキスト ファイルが開きます。
2.下部のステータス バーの [プレーン テキスト] を選択するか、Ctrl + K > M を押し、[言語] ドロップダウンから [SQL] を選択します。


>注意
この拡張機能を初めて使用する場合は、サポートされている SQL Server ツールが拡張機能によってインストールされます。
ファイル拡張子が .sql である既存のファイルを開くと、言語モードが自動的に SQL に設定されます。

```LOG
Installing SQL tools service to c:\Users\rex02\.vscode\extensions\ms-mssql.mssql-1.7.1\sqltoolsservice\1.7.1\Windows.
Downloading https://download.microsoft.com/download/c/2/f/c9857f58-e569-4677-ad24-f180e83a8252/microsoft.sqltools.servicelayer-win-x64-netcoreapp2.2.zip
(42694 KB) .................... Done!
Installing ...
Done! 436 files unpacked.
```

# SQL Server への接続

Docker の SQL Server 2019 に接続します。

>次の手順に従って接続プロファイルを作成し、SQL Server に接続します。
Ctrl + Shift + P を押すか、F1 を押して [コマンド パレット] を開きます。
「sql」と入力して mssql コマンドを表示するか、sqlcon と入力し、ドロップダウンから [MS SQL:接続] を選択します。
mssql コマンド

> 注意
mssql コマンドを実行する前に、SQL ファイル (作成した空の SQL ファイルなど) がコード エディターでフォーカスされている必要があります。
[MS SQL:接続プロファイルの管理] コマンドを選択します。
次に、 [作成] を選択して、お使いの SQL Server 用の新しい接続プロファイルを作成します。
指示に従って、新しい接続プロファイルの接続プロパティを指定します。 それぞれの値を指定した後、Enter キーを押して続行します。


# データベースの作成

SQL ファイル内で、「sql」と入力して、編集可能なコード スニペットの一覧を表示
CreateDatabase　を選択して、データベース名を入力すると、Transact-SQL コマンドの出来上がり


![2019-11-20_16h25_02.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/b7e75cb4-85d1-39c7-94fe-e9110e059ec7.gif)

CTL+Shift+E で、コマンドの実行
一部を選択して、CTL+Shift+E すると、選択部分のみ実行

<img width="838" alt="2019-11-20_16h29_49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/47face7f-b784-4ee7-be7e-9f2245a0f9e9.png">

# テーブルの作成

<img width="840" alt="2019-11-20_16h58_18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1acd6bae-c6db-b109-eca1-a001f047d335.png">


# データの挿入とクエリ

<img width="837" alt="2019-11-20_17h00_16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/32ae7079-3ff2-1bd7-e86c-8a7c920d13c3.png">

# クエリ結果の保存

クエリ結果をいろいろな形式で保存できます。
試しに json 形式保存


<img width="431" alt="2019-11-20_17h02_50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/0f29b49c-444b-9ff4-74db-ed8612c12571.png">

```test.json
[
  {
    "EmployeesId": 1,
    "Name": "Jared",
    "Location": "Australia"
  },
  {
    "EmployeesId": 2,
    "Name": "Nikita",
    "Location": "India"
  },
  {
    "EmployeesId": 3,
    "Name": "Tom",
    "Location": "Germany"
  },
  {
    "EmployeesId": 4,
    "Name": "Jake",
    "Location": "United States"
  }
]
```


# あとがき

Docker 上の SQL Server も、違和感なく VSCode で接続・操作できますね。
VSCode のSQL等のいろいろな補完機能は、便利。