ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Docker MS SQL Server 2017 for linux

Docker用SQL Server 2017を起動してみる。

参考:https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker

Dockerのメモリを4GB にする必要がある。

  • 最上位のステータス バーに Docker ロゴをクリックします。
  • 選択設定です。
  • メモリ インジケーターを 4GB 以上に移動します。
  • クリックして、再起動画面のボタンをクリックします。

Sql Server 2017の最新イメージをダウンロードする。

$ docker pull microsoft/mssql-server-linux:2017-latest
2017-latest: Pulling from microsoft/mssql-server-linux
aed15891ba52: Pull complete 
773ae8583d14: Pull complete 
d1d48771f782: Pull complete 
cd3d6cd6c0cf: Pull complete 
8ff6f8a9120c: Pull complete 
1fd7e8b10447: Pull complete 
bd485157db89: Pull complete 
273a1970ce9c: Pull complete 
006581b3a024: Pull complete 
25c54ac351f0: Pull complete 
Digest: sha256:77ebcec549076994f93ab85c5ce194e85366d9bcd124c53e1347660edd315666
Status: Downloaded newer image for microsoft/mssql-server-linux:2017-latest

コンテナの作成/実行

$ docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' -p 1433:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest

※ポートフォワードは1433を指定しないとManagementStudioから繋がらなかった。

バックアップファイルからの復元

ManagementStudioから見た感じ、「/var/opt/mssql/data」しか接近が許可されていなかったため、ホストから、指定フォルダーにバックアップファイルをコピーする。

$ docker cp /work/mssql.bak sql1:/var/opt/mssql/data

ManagementStudioから復元

普通に出来たので、説明は不要かな…

ManagementStudio以外でSQL Serverへ接続する方法

復元済みのバックアップファイルを削除している。

$ docker exec -it sql1 "bash"
$ rm /var/opt/mssql/data/mssql.bak

sqlcmdの実行

Pathは設定されていないため、直接実行する。

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'

DBの作成

DBの照合順序はデフォルト「Latin1_General_100_CS_AS_SC」で有るため、日本語用に指定して作成しないと日本語が文字化けする。

USE master;  
GO  
IF DB_ID (N'MyOptionsTest') IS NOT NULL  
DROP DATABASE MyOptionsTest;  
GO  
CREATE DATABASE MyOptionsTest  
COLLATE Japanese_XJIS_100_CI_AI_WS;  
GO