Ubuntu 18.04 で SQL Server2019 Express を試してみる


Ubuntu 18.04 で SQL Server2019 Express を試してみる

目的

Ubuntu 18.04 に SQL Server2019 Express をインストールしてみる

コンパイル用のパッケージを追加する

$ sudo apt install gcc

提案パッケージ: を追加
$ sudo apt install gcc-7-locales gcc-multilib make autoconf automake libtool flex bison gcc-doc gcc-7-multilib gcc-7-doc libgcc1-dbg libgomp1-dbg
libitm1-dbg libatomic1-dbg libasan4-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg
glibc-doc

aptのrepositoryを追加する


$ sudo wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"

SQL Server をインストールする


$ sudo apt update
$ sudo apt install -y mssql-server

SQL Server の初期設定を行う


$ sudo /opt/mssql/bin/mssql-conf setup
SQL Server のエディションを選択します:
 1) Evaluation (無料、製品使用権なし、期限 180 日間)
 2) Developer (無料、製品使用権なし)
 3) Express (無料)
 4) Web (有料)
 5) Standard (有料)
 6) Enterprise (有料)
 7) Enterprise Core (有料)
 8) 小売販売チャネルを介してライセンスを購入し、入力するプロダクト キーを持っています。
~
エディションを入力してください(1-8): 3
~
ライセンス条項に同意しますか? [Yes/No]:y
~
SQL Server の言語の選択:
(1) English
(2) Deutsch
(3) Espanol
(4) Francais
(5) Italiano
(6) 日本語
(7) 한국어
(8) Portugues
(9) Русский
(10) 中文 – 简体
(11) 中文 (繁体)
オプション 1-11 を入力: 6
~
SQL Server システム管理者パスワードを入力してください:
SQL Server システム管理者パスワードを確認入力してください:
SQL Server を構成しています...

ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service
 → /lib/systemd/system/mssql-server.service.
セットアップは正常に完了しました。SQL Server を起動しています。

$ sudo systemctl status mssql-server --no-pager
$ sudo systemctl start mssql-server
$ sudo systemctl stop mssql-server

ツール系のインストール


$ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
$ sudo apt update 
$ sudo apt install mssql-tools unixodbc-dev
※ライセンスの確認で2回[はい]を押す
$ vi ~/.profile で以下を追加する
export PATH=$PATH:/opt/mssql-tools/bin
$ source ~/.profile
$ env で追加されていることを確認
PATH=$PATH:/opt/mssql-tools/bin
$ sqlcmd -S localhost -U SA -P '設定したパスワード' -Q 'select @@version'

-------------------------------------------------------------------------- ~
Microsoft SQL Server 2019 (RTM-CU4) (KB4548597) - 15.0.4033.1 (X64)
        Mar 14 2020 16:10:35
        Copyright (C) 2019 Microsoft Corporation
        Express Edition (64-bit) on Linux (Ubuntu 18.04.4 LTS)                                           
~
$ ping ip_adddr -p 1433
PATTERN: 0x1433
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.020 ms

Windows版のSSMSより サーバーのIPを直接指定で接続確認

DSNの設定


$ cat /etc/odbc.ini
[MSSQLDEMO]
Description = SQL Server2019Express
Driver = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.5.so.2.1
Server = tcp:192.168.5.49
Trace = No
Database = DEMO
Port = 1433
ClientCharset = UTF-8
----------------------------------------------------------------------
・項目の説明
[MSSQLDEMO]
\#ドライバーの説明
Description = SQL Server2017Express
\#ドライバーの場所
Driver = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
\#トレースするかの有無
Trace = No
\#データベースのIPアドレス
Server = tcp:xxx.xxx.xxx.xxx
\#データベース名
Database = DEMO
\#ポート番号 SQL Serverは通常 1433
Port = 1433
\#クライアント(Linux側)の文字コードセット
ClientCharset = UTF-8
----------------------------------------------------------------------
$ sudo odbcinst -i -d -f /etc/odbc.ini
odbcinst: Driver installed. Usage count increased to 1.
    Target directory is /etc
  -i インストール
  -d ドライバー
  -f テンプレートファイル名
  
$ sudo odbcinst -q -d
[ODBC Driver 17 for SQL Server]
[MSSQLDEMO]
  -q 検索
  -d ドライバー
 
$ sudo odbcinst -u -d -n MSSQLDEMO
MSSQLDEMO has been deleted (if it existed at all) because its usage count became zero
  -u アンインストール
  -n ドライバー又はDSN名

DBI::DBDでアクセスしてみる


$ sudo apt-get install perl-doc
$ sudo apt install cpanminus
$ sudo cpanm install DBD::ODBC
$ sudo cpanm install DDP
$ sudo cpanm install DBI

サンプルコード(テーブルは郵便番号を取り込んだもの)

test.pl
use strict;
use utf8;
use DBI;

my $dbh=DBI->connect('dbi:ODBC:MSSQLDEMO','demo','demo') or die $!;
my $sth=$dbh->prepare("select * from ZIPCODE") or die $dbh->errstr;

# 出力エラー対策
$sth->{LongTruncOk}=1;
$sth->{LongReadLen}=2000000;

$sth->execute or die $dbh->errstr;
while(my $arrayref = $sth->fetchrow_arrayref){
        use DDP;
        p $arrayref;
}
$sth->finish;
$dbh->disconnect;

$ perl samp.pl

参考にしたのは以下のサイト

クイック スタート:Ubuntu に SQL Server をインストールし、データベースを作成する
Ubuntu 16.04 x64 で SQL Server2017 Express を試してみる
Ubuntu 16.04 x64 + SQL Server2017 Express で AdventureWorks2017.bak を復元してみる