Skip to content
PLAY VIDEO PLAY VIDEO PLAY VIDEO
By Sebastian Porto

Developing with MS SQL on your Mac

I recently had to set up a MS SQL database on my Mac for a client project, if you ever have to do this here is a mini tutorial.

In this post I am using VMWare Fusion for virtualisation, but you could use something else and the instructions should be mostly portable.

Get a Windows VM

Go to https://www.modern.ie/en-us/virtualization-tools and download a VM (Virtual Machine) for your Mac. I will be using Windows 7 (the version of IE doesn't matter).

Install the virtual machine and log in.

voila_capture 2014-07-18_09-20-15_am

Get MS SQL Express with tools

As you download the Windows VM you can also download the free version or MS SQL.

At the time of writing the tiny_tds gem - the gem needed to access MS SQL - only supports MS SQL up to version 2012. So version 2014 won't work.

Go to http://www.microsoft.com/en-au/download/details.aspx?id=29062 and download MS SQL Express 2012, make sure to get the version with tools (named something like ENU\x86\SQLEXPRWTx86ENU.exe).

voila_capture 2014-07-18_09-21-07_am

Install MS SQL Express

If you downloaded MS SQL Express on your Mac, you will need to make it accessible to your Windows VM. If you are using Fusion you can simply drag and drop the installer to Windows.

Run the installer and just install the default components. Accept the defaults in all other screens.

voila_capture 2014-07-18_09-32-38_am

Create a DB for testing

In Windows, open SQL Server Management Studio. Connect using the provided defaults, then:

  • Right click on Databases
  • Click on New Database
  • Add a name e.g. Test
  • Click OK

voila_capture 2014-07-18_10-18-07_am

Enable SQL Authentication

Still in SQL Server Management Studio:

  • Right click on the root of the tree e.g. IE11WIN7\SQEXPRESS
  • Select Properties
  • Select Security
  • Enable SQL Server and Windows Authentication mode
  • Click OK

voila_capture 2014-07-18_10-06-36_am

Create a database user

In Management Studio:

  • Click on Security on the tree
  • Right click on Logins
  • Select New Login
  • Add a use e.g. dbuser
  • Select SQL Server authentication
  • Add a password

voila_capture 2014-07-18_10-40-22_am

Set user mappings

In the same screen:

  • Click on User Mapping
  • Check the previously created DB e.g. Test
  • Click the ... button on the right
  • In the pop up window, select Browse
  • Check dbo and OK
  • Select OK again
  • Select db_owner on the bottom
  • Finally click OK

voila_capture 2014-07-18_10-47-26_am

You can then close Management Studio.

Enable TCP in Express

In Windows, open SQL Server Configuration Manager. Then:

  • Click on SQL Server Network Configuration
  • Click on Protocols for SQLEXPRESS
  • Double click on TCP/IP on the right.
  • Change Enabled to Yes

voila_capture 2014-07-18_09-52-42_am

  • Click on IP Addresses
  • Scroll down all the way to IPAll
  • Set the TCP Port e.g. 1433

voila_capture 2014-07-18_11-24-37_am

  • Click OK

Restart SQL (in the same window):

  • Click on SQL Server Services
  • Right click on SQL Server on the right and select Restart

We can now close SQL Server Configuration Manager.

Disable the Windows Firewall

In Windows:

  • Go to the Control Panel
  • Search for firewall and open the Windows Firewall settings
  • Click on Turn Windows Firewall on or off on the left
  • On the Home network settings, click on Turn off Windows Firewall
  • Click OK and close the control panel

voila_capture 2014-07-18_10-57-08_am

Find the IP address for the VM

In Windows:

  • Click on the network icon on the bottom bar
  • Click on Open Network and Sharing Center
  • Click on the link on Connections e.g. Local Area Connection
  • Click on Details
  • Take note of the IPv4 Address e.g. 192.168.0.11 in my case, this is the IP our VM is running on

voila_capture 2014-07-18_10-59-46_am

Set network location to home

In Windows:

  • Open the Network and Sharing Center as in the previous step
  • Click on the link under Network if it says 'Public network'
  • Click on Home network in the pop up window
  • Click Next several times and then Finish

The Network should be set to 'Home network'

voila_capture 2014-07-18_10-59-58_am

voila_capture 2014-07-18_11-07-45_am

Test the connection from the Mac terminal

In the mac terminal test the connection to the Windows VM:

    ping 192.168.0.11

Note that the IP address will most likely be different on your machine.

This should give you a successful ping. If you get a timeout double check the network settings and firewall in Windows.

Test the connection to MS SQL

If you have an application that can connect to MS SQL on the Mac, I recommend testing the connection from there first before going to Rails. I am using Navicat in my case. Otherwise just skip this step.

In Navicat:

  • Create a new connection for MS SQL
  • Set the IP Address to your VM IP e.g. 192.168.0.11
  • Set the port as set previously e.g. 1433
  • Set Initial Database to the DB created previously e.g. Test
  • Set User Name and Password as created previously
  • Test the connection

voila_capture 2014-07-18_11-33-01_am

Install freetds

In order to connect to MS SQL, we need to install the necessary libraries in our Mac. Install freetds using homebrew, in the Mac terminal:

brew update
brew install freetds

Add the tiny_tds gem to your project

In your Gemfile:

gem 'tiny_tds',                          '~> 0.6'

Then: bundle

Set up the connection in Rails

In your database.yml, add / modify an entry for using the MS SQL db:

mssql:
  adapter: sqlserver
  host: 192.168.0.11
  port: 1433
  database: Test
  username: dbuser
  password: 123456
  pool: 5
  timeout: 5000

Take care to set the values as set previously i.e. host, port, username and password.

When this is done, your Rails application should now be able to connect to the MS SQL Express server running on the VM.

Latest Articles by Our Team

Our expert team of designers and developers love what the do and enjoy sharing their knowledge with the world.

We Hire Only the Best

reinteractive is Australia’s largest dedicated Ruby on Rails development company. We don’t cut corners and we know what we are doing.

We are an organisation made up of amazing individuals and we take pride in our team. We are 100% remote work enabling us to choose the best talent no matter which part of the country they live in. reinteractive is dedicated to making it a great place for any developer to work.

Free Community Workshops

We created the Ruby on Rails InstallFest and Ruby on Rails Development Hub to help introduce new people to software development and to help existing developers hone their skills. These workshops provide invaluable mentorship to train developers, addressing key skills shortages in the industry. Software development is a great career choice for all ages and these events help you get started and skilled up.

  • Webinars

    Webinars

    Webinars are our online portal for tips, tricks and lessons learned in everything we do. Make the most of this free resource to help you become a better developer.

    Learn more about webinars

  • Installfest

    Installfest

    The Ruby on Rails Installfest includes a full setup of your development environment and step-by-step instructions on how to build your first app hosted on Heroku. Over 1,800 attendees to date and counting.

    Learn more about Installfest

  • Development Hub

    Development Hub

    The Ruby on Rails Development Hub is a monthly event where you will get the chance to spend time with our team and others in the community to improve and hone your Ruby on Rails skills.

    Learn more about Development Hub

Get the “reinteractive Review” Monthly Email