はじめに
2019/08/21 に SQL Server 2019 RC1 が発表されました。
-
SQL Server 2019 release candidate is now available - SQL Server Blog
このRCはRelease Candidate(製品候補版)ということで、大きな問題などがなければ9月か10月にはGA(General Availability)されるだろうと思います。
今回は、GAに向けて、Docker環境のSQL Server 2019 (RHEL)にAdventureWorksDBを入れ、デモとして利用できる環境を作成します。
環境
今回は、以下の環境でインストールを実施しています。
- OS: Windows 10 Pro Version 1903 (OS Build 18362.295)
- Docker Desktop: 2.1.0.1 (37199)
- Docker Engine: 19.03.1
- Docker Compose: 1.24.1
※OSは、macOS Mojave 10.14.6でも確認済みです。
インストール
インストールは、CTP3.2の時と同様です。
imageの個所をCTP3.2からRC1に変更することでSQL Server 2019 RC1を起動できます。
docker-compose up -d
でSQL Serverを起動してください。
version: '3'
services:
mssql:
image: mcr.microsoft.com/mssql/rhel/server:2019-RC1
container_name: 'mssql2019-rc1-rhel'
environment:
- MSSQL_SA_PASSWORD=<your_strong_password>
- ACCEPT_EULA=Y
# - MSSQL_PID=<your_product_id> # default: Developer
# - MSSQL_PID=Express
# - MSSQL_PID=Standard
# - MSSQL_PID=Enterprise
# - MSSQL_PID=EnterpriseCore
ports:
- 1433:1433
volumes: # Mounting a volume does not work on Docker for Mac
- ./mssql/log:/var/opt/mssql/log
- ./mssql/data:/var/opt/mssql/data
AdventureWorksのダウンロード
MS Docs、もしくは GitHubより、AdventureWorks2017.bak をダウンロードしてください。
AdventureWorksの配置
AdventureWorksの配置(Windows)
ダウンロードしたAdventureWorks2017.bakファイルを、ホストの.\mssql\dataフォルダパス内に配置します。
> dir D:\Docker\mssql-2019\mssql\data /b
AdventureWorks2017.bak <-ファイルが配置されていることを確認
Entropy.bin
master.mdf
mastlog.ldf
model.mdf
modellog.ldf
model_msdbdata.mdf
model_msdblog.ldf
model_replicatedmaster.ldf
model_replicatedmaster.mdf
msdbdata.mdf
msdblog.ldf
tempdb.mdf
tempdb2.ndf
templog.ldf
AdventureWorksの配置(Mac)
Docker on Macでは、docker-compose.yaml上でvolumesタグを指定できません。
そのため、docker cpコマンドを使用してAdventureWorks2017.bakファイルを/var/opt/mssql/dataディレクトリに配置します。
ダウンロードしたAdventureWorks2017.bakファイルが存在するディレクトリに移動します。
※今回は、docker-compose.yamlファイルと同じディレクトリに配置しました。
$ ls -al
total 98224
drwxr-xr-x 4 ymasaoka staff 128 8 28 01:54 .
drwxr-xr-x 12 ymasaoka staff 384 8 12 17:59 ..
-rw-r--r-- 1 ymasaoka staff 50286592 8 28 01:54 AdventureWorks2017.bak
-rw-r--r-- 1 ymasaoka staff 817 8 27 00:00 docker-compose.yaml
docker ps
コマンドを使用して、起動しているSQL Server 2019コンテナのIDを確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0868b38e321 mcr.microsoft.com/mssql/rhel/server:2019-RC1 "/opt/mssql/bin/perm…" 4 days ago Up 4 seconds 0.0.0.0:1433->1433/tcp mssql2019-rc1-rhel
この例でいうと、e0868b38e321
がコンテナIDです。
このIDを使用して、Dockerコンテナ内の/var/opt/mssql/dataディレクトリにAdventureWorks2017.bakを配置します。
$ docker cp AdventureWorks2017.bak e0868b38e321:/var/opt/mssql/data
Dockerコンテナの中に入り、AdventureWorks2017.bakが配置されていることを確認してください。
$ docker exec -it e0868b38e321 "bash"
[root@localhost /]# ls -al /var/opt/mssql/data
total 121952
drwxr-xr-x 2 root root 4096 Aug 27 17:06 .
drwxr-xr-x 6 root root 4096 Aug 22 21:21 ..
-rw-r--r-- 1 501 games 50286592 Aug 27 16:54 AdventureWorks2017.bak # ファイルが配置されていることを確認
-rw-r----- 1 root root 256 Aug 22 21:21 Entropy.bin
-rw-r----- 1 root root 4653056 Aug 27 16:59 master.mdf
-rw-r----- 1 root root 2097152 Aug 28 11:07 mastlog.ldf
-rw-r----- 1 root root 8388608 Aug 27 16:59 modellog.ldf
-rw-r----- 1 root root 8388608 Aug 27 16:59 model.mdf
-rw-r----- 1 root root 14024704 Aug 22 21:21 model_msdbdata.mdf
-rw-r----- 1 root root 524288 Aug 22 21:21 model_msdblog.ldf
-rw-r----- 1 root root 524288 Aug 22 21:21 model_replicatedmaster.ldf
-rw-r----- 1 root root 4653056 Aug 22 21:21 model_replicatedmaster.mdf
-rw-r----- 1 root root 14024704 Aug 22 21:34 msdbdata.mdf
-rw-r----- 1 root root 524288 Aug 27 16:59 msdblog.ldf
-rw-r----- 1 root root 8388608 Aug 27 16:59 tempdb.mdf
-rw-r----- 1 root root 8388608 Aug 28 13:28 templog.ldf
AdventureWorksの復元
AdventureWorksの復元(Windows)
SSMS(SQL Server Management Studio)を起動します。
Dockerコンテナ上で起動しているSQL Server 2019 RC1にログインします。
ログイン出来たら、[サーバー名] -> [データベース]を右クリックし、[データベースの復元]を選択します。
[データベースの復元]画面が表示されます。
[ページの選択] -> [全般]を選択し、[ソース]欄にあるラジオボタン[デバイス]を選択します。
ラジオボタン右横にある参照ボタン[...]を選択します。
[バックアップ デバイスの選択]画面が表示されます。
[追加]ボタンを選択します。
[バックアップ ファイルの検索]画面が表示されます。
/var/opt/mssql/dataディレクトリがデフォルトで表示されており、配置したAdventureWorks2017.bakが選択できることを確認します。
AdventureWorks2017.bakを選択し、[OK]を選択します。
[バックアップ デバイスの選択]画面に、追加したAdventureWorks2017.bakファイルの情報が表示されていることを確認します。
[OK]を選択します。
[データベースの復元 - AdventureWorks2017]画面が表示されます。
[OK]を選択し、データベースの復元を開始します。
※必要に応じて、[File]タブや[オプション]タブ内の設定を行ってください。
復元に成功すると、以下の画面が表示されます。
オブジェクトエクスプローラー上で[AdventureWorks2017]のDBが追加されたことを確認してください。
AdventureWorksの復元(Mac)
Azure Data Studioを起動します。
Dockerコンテナ上で起動しているSQL Server 2019 RC1にログインします。
ログイン出来たら、SERVER DASHBOARDを開き、[Tasks] -> [Restore]を選択します。
[Restore database]画面が開きます。
[General]タブを選択します。
[Source] -> [Restore from]欄で、[Backup file]を選択します。
[Backup file path]欄にあるファイル選択ボタンを選択します。
[Select a file]画面が表示されます。
dataディレクトリ以下に表示されている[AdventureWorks2017.bak]ファイルを選択し、[OK]を選択します。
[Restore database]画面に戻ります。
復元する内容を確認し、[Restore]を選択します。
データベースのリストアが開始されます。
問題ない場合は、[TASKS]コンソールに[Restore Database succeeded]が表示されます。
[AdventureWorks2017]のDBが追加されたことを確認してください。
終わりに
Docker環境のSQL Server 2019 (RHEL)にAdventureWorksDBを入れて、デモとして利用できる環境を作成しました。
何も問題がなければ、2019/09もしくは2019/10には、SQL Server 2019はGAを迎えられると思います。
GAの前にいろいろ試して、ぜひ活用してみてください。
JSSUG(Japan SQL Server User Group)では、月1回、SQL Serverの勉強会を行なっています。
Microsoft MVPの方など、詳しい方もいらっしゃるので、興味ある方はぜひこちらにも参加してください。
またJSSUGにはSlackグループもあります。
SQL Serverの最新情報などをいち早く確認することができますので、こちらもぜひJoinしてみてください。