Jack of all trades

master of none. 多芸は無芸を地で行く、自作自演何でも屋。

SQL Server 2017 CTP2.0 on Ubuntu16.04 を Ruby on Railsで利用する

1. SQL Server 2017 CTP2.0 を Ubuntu16.04にインストー

SQL Server 2017 CTP2.0はLinux上でも動作するということで、早速以下のサイトに従ってUbuntu16.04上にインストールしてみました。

Install SQL Server on Ubuntu | Microsoft Docs

※注意:サイトにも記載されていますが、SQL Server on linuxのインストールにはメインメモリが3.25GB以上必要です。不足している場合はインストール時のチェックで弾かれてインストールが実行できません。

無事にインストール完了。

systemctl status mssql-server

を実行すると、サービスが実行中になっていることを確認できます。

f:id:sadynitro:20170429072041p:plain

2. SQL Server Management Studio (SSMS) から接続する

もちろんWindowsクライアント上のSSMSから接続することもできます。

https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-develop-use-ssms

SSMSのバージョンはv17.0 RC1(ダウンロードのページで「SQL Server Management Studio - リリース候補」と書かれている方)を使用します(少なくともSQL Server 2014のSSMSだと互換性の問題によるエラーが発生しました。SQL Server 2016のSSMSは未確認。)

Download SQL Server Management Studio (SSMS) | Microsoft Docs

f:id:sadynitro:20170429074326p:plain

接続できました。

3. Ruby on Rails アプリケーションから利用する

単純にUbuntu上で稼働しているのを確認するだけだと面白くないので、何かしらのアプリケーションから利用したいと思います。

on LinuxSQL Serverを利用したアプリケーション開発の為の手順・サンプルコードも既に用意されているので、それに沿って作っていきます。

Ruby Ubuntu

様々な言語に対応したサンプルが用意されていますが、今回はRuby(Ruby on Rails)を選択します。

SSMSを確認するとRailsアプリケーション用のDBが出来上がっています。

f:id:sadynitro:20170429083144p:plain

これで準備完了。rails sを実行します。

rails s -b 0.0.0.0 -p 3000

ブラウザでアプリが実行されていることを確認できます。

f:id:sadynitro:20170429081746p:plain

これだけだとDBサーバーを利用している感が無いので、scaffoldで適当なユーザー管理(CRUD)の仕組みを生成します。

  • モデル名: user
  • カラム
    • name: string
    • age: integer
rails generate scaffold user name:string age:integer

scaffoldの実行が終わったらrake db:migrateを実行。

SSMSからDBの中身を確認するとUsersテーブルが生成されていることを確認できます。

f:id:sadynitro:20170429083742p:plain

rails s を実行して、ブラウザからアクセスするとユーザー管理ページが開きます。

f:id:sadynitro:20170429084041p:plain

適当にユーザーを登録。

f:id:sadynitro:20170429084115p:plain

f:id:sadynitro:20170429084120p:plain

SSMSを確認すると、ちゃんとUsersテーブルにレコードが追加されています。

f:id:sadynitro:20170429084202p:plain

まとめ

公式サイトの手順に従って、SQL Server 2017 CTP2.0をサクッとインストールできました。さらに、用意されたサンプルでサックリRuby on Railsから利用することができました。

何もかもサクサク。

ASP.NET Coreだけでなく、Linux上で動作する様々なアプリケーションフレームワークからSQL Serverが利用される日が来るかもしれませんね。 f:id:sadynitro:20170429084825p:plain