Menggunakan SQL Server Melalui Linux dan Docker

Muhammad Arslan 24 Juni 2017

Menggunakan SQL Server Melalui Linux dan Docker

##Pendahuluan

SQL Server merupakan salah satu relational database yang cukup banyak digunakan oleh enterprise. SQL Server juga merupakan komplian dari Azure SQL Database. Sehingga aplikasi yang dikembangkan menggunakan SQL Server sebelumnya, dapat dimigrasikan ke Azure SQL Database. SQL Server juga dapat digunakan untuk pengembangan lokal sebelum di-deploy ke production.

Namun sayangnya nasib kurang beruntung menimpa pengguna Linux dan OSX. Karena Microsoft tidak memberikan versi express, lite, atau komunitas untuk Linux dan OSX. Walaupun bersifat evaluasi dan berbayar, akhirnya Microsoft memberikan versi "gratis" dari SQL Server yang dikemas di dalam sistem operasi Linux dan Docker. Namun sayangnya distribusi ini cuma bisa digunakan selama 5 bulan.

Betul, kamu dapat menjalankan SQL Server diatas Linux dan OSX dengan menggunakan SQL Server for Linux yang dikemas di dalam Docker.

##Instalasi

Pastikan kamu sudah memasang Docker di sistem operasi Linux atau OSX yang sudah kamu miliki. Kemudian mari kita tarik image-nya dari Docker Hub:

$ docker pull microsoft/mssql-server-linux

Kemudian pasang juga SQL Server Client yang ditulis menggunakan Node.js bernama mssql. Kamu dapat memasangnya dengan cara berikut:

$ npm install mssql -g

##Saatnya mencoba

Pastikan Docker kamu sudah di-setting untuk menggunakan minimal RAM 3.5GB, karena Docker SQL Server for Linux ini membutuhkan RAM sebesar 3.5GB. Bila kamu menggunakan OSX, kamu dapat mengaturnya di Preferences -> Advanced -> Memory -> Geser ke 3.5GB -> Apply & Restart.

Untuk menjalankannya, silahkan eksekusi perintah berikut:

$ docker run -d --name sql-server-linux -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=M@5t3rPi3c3' -p 1433:1433 microsoft/mssql-server-linux

Perintah diatas mempunyai makna jalankan sebuah container dengan nama sql-server-linux dan kita atur environment variabel untuk ACCEPT_EULA dan SA_PASSWORD. Kemudian kita lakukan port forwarding dari port 1433 milik container ke port 1433 milik host, dan gunakanlah template image microsoft/mssql-server-linux.

Setelah jalan, kamu dapat mulai mencoba melakukan operasi di dalam SQL Server dengan menggunakan mssql.

$ mssql -u sa -p M@5t3rPi3c3

Sekarang kamu akan melihat konsol seperti berikut:

Connecting to localhost...done

sql-cli version 0.6.2
Enter ".help" for usage hints.
mssql> use master;
OK

Executed in 0 ms
mssql> select name, database_id, create_date from sys.databases;
name           database_id  create_date
-------------  -----------  ------------------------
master         1            2003-04-08T09:13:36.390Z
tempdb         2            2017-06-24T04:58:33.860Z
model          3            2003-04-08T09:13:36.390Z
msdb           4            2017-05-10T14:37:18.410Z

4 row(s) returned

Executed in 1 ms
mssql> .help
command             description
------------------  ------------------------------------------------
.help               Shows this message
.databases          Lists all the databases
.tables             Lists all the tables
.sprocs             Lists all the stored procedures
.search TYPE VALUE  Searches for a value of specific type (col|text)
.indexes TABLE      Lists all the indexes of a table
.read FILENAME      Execute commands in a file
.run FILENAME       Execute the file as a sql script
.schema TABLE       Shows the schema of a table
.analyze            Analyzes the database for missing indexes.
.quit               Exit the cli

mssql> .databases
name
-------------
master
model
msdb
tempdb

4 row(s) returned

Executed in 1 ms
mssql> .tables
database  schema  name                   type
--------  ------  ---------------------  ----------
master    dbo     MSreplication_options  BASE TABLE
master    dbo     spt_fallback_db        BASE TABLE
master    dbo     spt_fallback_dev       BASE TABLE
master    dbo     spt_fallback_usg       BASE TABLE
master    dbo     spt_monitor            BASE TABLE
master    dbo     spt_values             VIEW

6 row(s) returned

Executed in 1 ms

##Referensi