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
サンプルコード(テーブルは郵便番号を取り込んだもの)
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 を復元してみる