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を追加する
<pre>
$ 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)"
</pre>
##SQL Server をインストールする
<pre>
$ sudo apt update
$ sudo apt install -y mssql-server
</pre>
##SQL Server の初期設定を行う
<pre>
$ 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
</pre>
##ツール系のインストール
<pre>
$ 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
※ライセンスの確認で２回[はい]を押す
$ 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) <X64>                                          
～
$ 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を直接指定で接続確認
</pre>
##DSNの設定
<pre>
$ 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名
</pre>
##DBI::DBDでアクセスしてみる
<pre>
$ sudo apt-get install perl-doc
$ sudo apt install cpanminus
$ sudo cpanm install DBD::ODBC
$ sudo cpanm install DDP
$ sudo cpanm install DBI
</pre>
サンプルコード（テーブルは郵便番号を取り込んだもの）

```perl: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 をインストールし、データベースを作成する](https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15)
[Ubuntu 16.04 x64 で SQL Server2017 Express を試してみる](https://qiita.com/tabizou/items/62168d897d2fc54b15f0)
[Ubuntu 16.04 x64 + SQL Server2017 Express で AdventureWorks2017.bak を復元してみる](https://qiita.com/tabizou/items/ec4153fcaae6bb022592)