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
を実行すると、サービスが実行中になっていることを確認できます。
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
接続できました。
3. Ruby on Rails アプリケーションから利用する
単純にUbuntu上で稼働しているのを確認するだけだと面白くないので、何かしらのアプリケーションから利用したいと思います。
on LinuxのSQL Serverを利用したアプリケーション開発の為の手順・サンプルコードも既に用意されているので、それに沿って作っていきます。
様々な言語に対応したサンプルが用意されていますが、今回はRuby(Ruby on Rails)を選択します。
- rbenvをインストール
- Rubyをインストール (サンプルの手順では2.3.1をインストール)
- Ruby on Railsをインストール (gem install rails)
- rails new を実行 (オプションに–database=sqlserverを指定)
- database.ymlを編集 (インストールしたSQL Serverの接続情報を書く)
- rake db:createを実行
SSMSを確認するとRailsアプリケーション用のDBが出来上がっています。
これで準備完了。rails sを実行します。
rails s -b 0.0.0.0 -p 3000
ブラウザでアプリが実行されていることを確認できます。
これだけだとDBサーバーを利用している感が無いので、scaffoldで適当なユーザー管理(CRUD)の仕組みを生成します。
- モデル名: user
- カラム
- name: string
- age: integer
rails generate scaffold user name:string age:integer
scaffoldの実行が終わったらrake db:migrateを実行。
SSMSからDBの中身を確認するとUsersテーブルが生成されていることを確認できます。
rails s を実行して、ブラウザからアクセスするとユーザー管理ページが開きます。
適当にユーザーを登録。
SSMSを確認すると、ちゃんとUsersテーブルにレコードが追加されています。
まとめ
公式サイトの手順に従って、SQL Server 2017 CTP2.0をサクッとインストールできました。さらに、用意されたサンプルでサックリRuby on Railsから利用することができました。
何もかもサクサク。
ASP.NET Coreだけでなく、Linux上で動作する様々なアプリケーションフレームワークからSQL Serverが利用される日が来るかもしれませんね。