#目的
Linux版のために使い始めた Ubuntu に SQL Server2017 Express をインストールしてみる
##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/16.04/mssql-server-2017.list)"
##SQL Server をインストールする
$ sudo apt-get update
$ sudo apt-get 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
~
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 を構成しています...
~
セットアップは正常に完了しました。SQL Server を起動しています。
##ツール系のインストール
$ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
$ sudo apt-get update
$ sudo apt-get install mssql-tools unixodbc-dev
※ライセンスの確認で2回[はい]を押す
$ sudo apt-get update
$ sudo apt-get install mssql-tools ※インストール済なので必要ない?
$ vi ~/.profile で以下を追加する
export PATH=$PATH:/opt/mssql-tools/bin
$ source ~/.profile
$ env で追加されていることを確認(当然かぶっている)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/mssql-tools/bin
$ sqlcmd -S localhost -U SA -P ''
$ ping ip_adddr -p 1433
Windows版のSSMSより サーバーのIPを直接指定で接続確認
※(たぶん)ブラウザーが無いため、SSMSの
ネットワークサーバー
-> データーベースエンジン
からは見えないのぁ・・・
##DSNの設定
$ cat /etc/odbc.ini
[MSSQLDEMO]
Driver = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
Server = tcp:xxx.xxx.xxx.xxx
Server = tcp:192.168.5.48
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
##参考にしたのは以下のサイト
クイック スタート: SQL Server をインストールし、Ubuntu でデータベースを作成
Linux 上の SQL Server の設定を環境変数で構成する
Mssql conf ツールを使用して Linux 上の SQL Server を構成します