hotch-potch, Note to self

いろいろ作業記録

SQL Server, Note to self

1.はじめに

データベースサーバ SQLServer を普段使いする機会が増えてきたので、頻繁に行う内容を覚え書きしてます。(随時追記)

試行環境

Linux hostname 5.15.0-43-generic #46-Ubuntu SMP Tue Jul 12 10:30:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Dockerのインストール

Ubuntu22の標準パッケージを使います。(Docker公式リポジトリでもOK)

$ sudo apt install docker.io docker-compose -y

$ docker -v
Docker version 20.10.12, build 20.10.12-0ubuntu4

$ docker-compose -v
docker-compose version 1.29.2, build unknown

2.サーバ準備 on Docker

DockerHubにイメージがあります。 https://hub.docker.com/_/microsoft-mssql-server

(1)準備

ディレクトリ構成は下記を想定しています。

 + [mssql/]
      + [data/]
      + [log/]
      + [sec/]
      + .env
      + docker-compose.yaml

※: […/]:ディレクトリ

ディレクトリと空ファイルを作成します。さらに一部のディレクトリのパーミッションを変更します。

$ mkdir -p mssql\data mssql\log mssql\sec
$ sudo chown 10001:0 mssql\data mssql\log mssql\sec
$ touch mssql\.env mssql\docker-compose.yaml
$ cd mssql

(2)ファイルに記述

docker-compose.yaml

version: '3'
# ---------------------------------------------------------
# DockerComposeの定義
# ---------------------------------------------------------

services:
  mssql:
    #イメージ
    image: mcr.microsoft.com/mssql/server:2019-latest
    #コンテナ名
    container_name: mssql-mine
    #ホスト名
    hostname: mssql-mine
    ports:
      # ポート番号(ホスト側:ゲスト側)
      - 1433:1433
    environment:
      - ACCEPT_EULA=Y
      # パスワード
      - SA_PASSWORD=KVLVuwWXA9TH
      # ロケールID(コンソールに出力される文字)
      # - MSSQL_LCID=1041 # 日本語の場合 
      - MSSQL_LCID=1033 # English - United States の場合
      # SQL Serverのエディションまたはプロダクトキーを指定
      - MSSQL_PID=Express 
      # 照合順
      - MSSQL_COLLATION=Japanese_CI_AS 
    volumes:
      # 永続化したいデータのマウント先(ホスト側:ゲスト側)
      - ./mssql/data:/var/opt/mssql/data
      - ./mssql/log:/var/opt/mssql/log
      - ./mssql/sec:/var/opt/mssql/sec

.env

# ---------------------------------------------------------
# DockerComposeの定義・環境変数
# ---------------------------------------------------------

# プロジェクト名
COMPOSE_PROJECT_NAME=mssql-mine

注意事項

(3)起動、停止、他

初回起動のときに、必要なデータファイルが自動的にコピーされます。

$ docker-compose up

Recreating mssql-mine ... done
Attaching to mssql-mine
mssql-mine | SQL Server 2019 will run as non-root by default.
・・・(省略)・・・
2022-08-10 01:57:06.08 spid18s      index restored for msdb.sysoperators.
2022-08-10 01:57:06.50 spid18s     The default collation was successfully changed.

ここまできたら、データベース接続ツール(SQL Server Management Studio (SSMS))*1で、接続テストします。

ホスト名 dockerを動かしているホスト名(リモートから接続もOK)
ユーザ sa
パスワード (自身で指定したパスワード)

接続確認出来たら、いったん終了して、Dockerも停止します。

[Ctrl-C]
Gracefully stopping... (press Ctrl+C again to force)
Stopping mssql-mine ... done

$ docker-compose up -d
Creating mssql-mine ... done

最後に、デタッチ起動して完了です。

その他の操作

走査 コマンド
イメージのビルド $ docker-compose build
起動 $ docker-compose up
停止時は[Ctrl-C]
起動(デタッチ・起動後にターミナルに戻る) $ docker-compose up -d
起動中のコンテナのシェルに入る $ docker exec -it <コンテナ名> /bin/bash
コンテナ一時停止・破棄なし $ docker-compose stop
コンテナ再開 $ docker-compose start
コンテナ停止と破棄 $ docker-compose down
コンテナ停止と破棄とボリュームも削除
(ホストにマウントしていたところはそのまま残る)
$ docker-compose down -v

3.SQL構文例

(随時)

参考資料