Never did I think that I'd be able to run SQL Server on my Mac. My, how times have changed.
For the first time, SQL Server 2017 allows users to install the product on Linux. This opens the doors for working with fully-featured SQL Server database engines on MacOS through freely distributable Docker containers. With the addition of a new graphical user interface that's in public preview, Mac users can now leverage the same industry-leading database platform that has previously only been available to Windows users, all on their local computer. Let me show you how to get started in three easy steps.
1. Install Docker
The first step is to install Docker. Start at https://store.docker.com/editions/community/docker-ce-desktop-mac, and click the Get Docker button on the top right. That will download a disc image containing the application. Drag Docker.app into your Applications folder and give it a double-click to launch. Look for the Docker icon in the top menu bar. When the animation stops, Docker is ready to go. Step one: done.
2. Pull the SQL Server 2017 container
Next, start up Terminal.app. This is where you'll issue commands to Docker. Microsoft provides pre-configured images that include the Developer edition of SQL Server 2017 running on Ubuntu Linux. You can pull the most recent version with the following command.
sudo docker pull microsoft/mssql-server-linux:2017-latest
After supplying your MacOS Administrator password, the image is downloaded.
Docker images need to be unpacked into containers, and a single image can be used to create as many identical containers as you'd like; just be sure to give them unique names. The following command will create a single container called 'sqlserver1' from the image you just downloaded. A couple of points:
Note that you'll want to provide your own strong password for the SQL Server System Administrator account. Just replace "YourStrong!Passw0rd" with something better.
Port 1401 on the local computer will be forwarded to SQL Server's default listening port of 1433 inside the container. This will be important to remember later.
Make sure that you forward a different port to 1433 if you decide to create additional containers.
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=YourStrong!Passw0rd' -p 1401:1433 --name sqlserver1 -d microsoft/mssql-server-linux:2017-latest
To verify that everything is working as intended, you can check the status of Docker's containers.
docker ps -a
You should see a line for the container and, hopefully, a status of "up." If you see "exited" here, go back and double check the previous commands were typed correctly. You can also try "docker stop sqlserver1" followed by "docker start sqlserver1" to reset the server. With the container now running, you're done with step two.
3. Install SQL Operations Studio
Microsoft is in the beginning stages of developing a cross-platform graphical user interface for SQL Server called SQL Operations Studio. Though it's still in an early public preview, SQL Ops Studio is already showing promise as a robust, lightweight interface that brings the best of SQL Server Management Studio (a venerable workhorse, but sadly Windows-only) over to the Mac and Linux platforms. The Ops Studio GitHub page will be your source of information as the project progresses. Head over to the GitHub repository, scroll down to the first section of the readme and download the MacOS zip containing the latest stable preview.
Upon Operations Studio's first launch, the Connection window will automatically prompt you for login credentials. Use "localhost" as the name of the server, "SA" as the user name, and fill in the password that you established when the Docker container was created. Then press the Advanced button, and scroll through the properties list until you get to the General section. Fill in the port number of 1401 here, or whichever port you're passing to SQL Server's 1433 listening port. Press OK, then Connect.
That should connect, and pass you back to the main interface. If you've ever seen Visual Studio Code, then you'll instantly recognize the interface's clean and well-organized layout. On the left is a listing of servers you're connected to. Expand the server folder to explore databases, security items and so on.
You're now up and running with the SQL Server database engine running in a Docker container, and you can manage it with Operations Studio on your Mac!
Bonus step 4. Start working with your new SQL Database Engine
What good is a server without a database? Right-click the Databases folder, and choose New Query. In the SQLQuery1 tab, type in the following command.
CREATE DATABASE MyDatabase; GO
Press the Run button to create your first database, which you should see pop up under the Databases folder. You might need to right-click the databases folder and choose Refresh if it doesn't show up immediately.
Operations Studio has a great feature called Snippets that help you quickly write common T-SQL commands. Clear out the CREATE DATABASE statement and change the Connection drop-down at the top to MyDatabase. Type "sql" to see the list of included snippets presented in the IntelliSense popup box.
Arrow down to sqlCreateTable and press Return. Operations Studio fills in all of the T-SQL to help you create a table in the database.
Notice that all of the TableName placeholders are selected, ready for you to overwrite them with your own name. Type it once, and each one gets updated simultaneously. Press the tab key to move over to SchemaName and change that to "dbo" (since we haven't created any other schemas at this point). Then all that's left is to modify the Column1 and Column2 placeholders on lines 10 and 11, choose appropriate data types, and add additional columns as needed.
Press the Run button when done to create your first table, in your first database, on your SQL Server instance, running on Ubuntu Linux, inside of a Docker container, on your Mac.
Dig in deeper with my course SQL Server 2017: Linux, Docker, and MacOS
I go into way more detail on the process of working with SQL Server on these newly available platforms in my newest course here on LinkedIn Learning. In it, I demonstrate the process of setting up SQL Server on Linux, use the sqlcmd command line tool, dive deeper into Docker, and connect instances to and from other machines on the network. Or, for more information on how to use SQL Server now that you're up and running, check out Learn SQL Server 2017.