1
1

More than 5 years have passed since last update.

Ubuntu 16.04 x64 で SQL Server2017 Express を試してみる

Posted at

目的

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 を構成します

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1