【環境構築】SQLEXPRESSを接続してみる

## 資材入手
- SQL Server 2022 Express をダウンロードする
https://www.microsoft.com/ja-jp/sql-server/sql-server-downloads
ダウンロードファイル：SQL2022-SSEI-Expr.exe

- SQL Server Management Studio (SSMS) をダウンロードする
https://learn.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16
ダウンロードファイル：SSMS-Setup-ENU.exe
## インストール
- SQL Server 2022 Express
すべてデフォルトのままでインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/cffd114d-ed2c-a17e-3a9a-efe0fcf72987.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/6f22441f-4352-ee69-16c1-779f5f829348.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/b44cdd41-a0fd-afdc-a754-bb1f03f29428.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/2794c596-75f9-2d1c-1118-9cf078d37c3d.png)
- SQL Server Management Studio (SSMS)
管理ツールのSSMSをインストールします。同じくデフォルトのままです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/e5438430-5666-601f-c425-5e41007ee5d1.png)

## 初期設定
SSMSを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/ff1dcf70-dd51-1030-213f-e94a4492f883.png)
現在ログイン中のドメインユーザと暗号化方式は「オプショナル」で接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/a27364de-d8bb-a9c1-a726-0c415ea3e772.png)
管理画面が表示されます。EXPRESSサーバを選んでプロパティ画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/105afb9d-60ec-4266-b97d-a2681d0604ab.png)
セキュリティページに、混在モードの認証方式を選びます。再起動が要求されますが、後でやります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/1f412c8c-25eb-d06b-719d-b7b28103f174.png)
ログインアカウントのsaを選んでプロパティ画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/dcd6133d-dd1f-cc33-701a-b546edf8071c.png)
一般ページに、パスワードを設定します。パスワード強化ポリシーを外せば簡単なパスワードを設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/a8dfc194-97fa-f343-e9b1-349983bf6f55.png)
状態ページに、ログイン可を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/7e825e39-ae9b-2d63-3f85-e307a0b405e8.png)
## 再起動と接続確認
構成マネージャーを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/2ac05247-728e-3fd2-aa37-461b81097c81.png)
SQLEXPRESSのサービスを選んで、再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/dbb8ef90-ba67-3b69-b764-a8eadda024d9.png)
SSMSを開いて、SQL Server認証方式とオプショナルの暗号化方式を選んで、saでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/766d52de-3251-e258-af85-7eb1d2d11d5a.png)
接続成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/6101f842-7886-75e8-7978-abd2ca787f28.png)
## TCP接続設定
javaからSQLEXPRESSを接続するため、TCP接続を有効に設定します。TCP/IPのプロトコールのプロパティ画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/7927ab6a-7fdd-7f06-bfcb-47fef450000f.png)
有効に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/14e1745c-938d-6d15-2948-8bca001729ee.png)
TCPポートを1433に設定します。動的ポートをクリアします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/734d2813-f67e-bfe2-a714-afcceaa72587.png)
## テストDB作成
SSMSのデータベースメニュー項目を選んで、右クリックして、新規データベース作成画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/2b26b39c-d2c7-807d-4848-981f06eee568.png)
helloworldのデータベースを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/c241535b-42cb-df59-d0be-931f79a5ecf9.png)

## javaアプリの接続テスト
hellworldのサンプルプログラムをtomcatのwebappsフォルダに入れます。

https://github.com/efwGrp/qittaSamples/tree/main/helloworld

META-INF/context.xmlにSQLEXPRESSの接続を設定します。
```xml
	<Resource
		name			=	"jdbc/efw"
		auth			=	"Container"
		type			=	"javax.sql.DataSource"
		driverClassName	=	"com.microsoft.sqlserver.jdbc.SQLServerDriver"
		url				=	"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=helloworld;integratedSecurity=false;encrypt=false;trustServerCertificate=false"
		username		=	"sa"
		password		=	"sa"
		maxTotal		=	"10"
		maxIdle			=	"10"
		maxWaitMillis	=	"10"
	/>
```
SQLEXPRESSの場合、以下３点は全部falseに設定します。
- integratedSecurity：統合セキュリティ
- encrypt：暗号化
- trustServerCertificate：信頼サーバー証明書

mssql-jdbc-12.8.1.jre8.jarをダウンロードしてhelloworld/WEB-INF/libに入れます。

https://learn.microsoft.com/ja-jp/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16

tomcatを起動します。コンソール画面からデータベース起動成功のログを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/f688c318-4651-6617-b1bf-90b7839fa447.png)
dbテスト画面で動作確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/145206f6-6db6-fad4-0852-afd83a966155.png)