Microsoft Entra ID (MFA) sign-in for Azure SQL on Mac, iPhone and iPad

Posted by Kyle Hankinson September 28, 2026


A lot of Azure SQL databases no longer have a SQL login you can use. Many organizations turn SQL authentication off entirely and require everyone to sign in with their work account, usually with multi-factor authentication on top. Until now, that left Mac, iPhone and iPad users without a native way in.

That changes with the latest update. SQLPro Studio and SQLPro for MSSQL now sign in to SQL Server with Microsoft Entra ID (the service formerly called Azure Active Directory) on macOS, iPhone and iPad. You sign in with Microsoft the same way you do everywhere else at work, MFA prompt included, and the app connects with the token Microsoft issues. The Windows apps already supported Entra ID sign-in; this brings the Apple platforms up to the same level.

What you can connect to

Entra ID sign-in works with the SQL Server services that accept it:

  • Azure SQL Database
  • Azure SQL Managed Instance

Nothing changes for SQL Server authentication or Windows authentication. Existing connections keep working exactly as before.

Two ways to sign in

Open a SQL Server connection and pick one of the two new authentication types.

Microsoft Entra - Interactive (MFA). This is the one most people want. When you connect, a Microsoft sign-in window opens. Choose your account, complete whatever your organization asks for (password, Authenticator push, security key, passkey) and the connection opens. The window always shows the account picker, so if you are signed in to more than one Microsoft account you pick the right one instead of the browser quietly reusing the last one.

Microsoft Entra - Device Code. For when a browser window is not practical, or you would rather finish the sign-in on another device. The app shows a short code; go to microsoft.com/devicelogin on your phone or any computer, enter the code, and sign in there. The app waits and connects as soon as you are done.

In both cases the login field is your work address, for example jane@contoso.com. There is no password to enter in the app.

You will not be asked every time

After the first sign-in, the app keeps a refresh token in the system keychain and gets new access tokens quietly in the background. Reconnecting, opening a second window on the same server, or relaunching the app does not bring the sign-in window back. You only see Microsoft again when your organization's policy says so (a password change, a revoked session, or a sign-in frequency rule).

A few details worth knowing:

  • Your password never passes through the app. You type it into Microsoft's own sign-in page. The app only receives the token Microsoft issues.
  • The account is checked. If you sign in as a different account from the one in the connection's login field, the app refuses the token and tells you which account Microsoft signed in, rather than connecting you as the wrong person.
  • Several connections, one prompt. Restore a workspace with five tabs on the same server and you get one sign-in, not five.

The tenant setting

Most people can ignore this. By default the sign-in uses the directory that belongs to the domain of your login, so jane@contoso.com signs in to the Contoso tenant.

Set the tenant yourself if you are a guest in another organization's directory, or if your organization's sign-in domain differs from the address in your login. On the Mac it is the Entra ID tenant field in the connection's advanced settings; on iPhone and iPad it is the Tenant field on the connection. Either the tenant's domain (company.onmicrosoft.com) or its tenant ID works.

First sign-in: consent

The first time anyone in an organization signs in, Microsoft asks whether the app may access Azure SQL Database on their behalf. Accept it once and it is not asked again.

Some organizations do not let users approve apps themselves. In that case Microsoft shows a message saying administrator approval is needed, or the sign-in ends with an error such as AADSTS65004 or access_denied. An administrator can approve the app for everyone from the Entra admin center; Microsoft describes the steps in grant tenant-wide admin consent to an application. The application ID to look for is a61530ad-aa3d-43bc-8d9d-e4e264e28263.

On the database side

Signing in with Microsoft only proves who you are. The server still has to know you. If you are setting up Entra ID access on Azure SQL for the first time:

  1. The logical server (or managed instance) needs a Microsoft Entra admin. You set it in the Azure portal under the server's Microsoft Entra ID settings.
  2. Each person or group needs a user in the database, created by that admin:
CREATE USER [jane@contoso.com] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [jane@contoso.com];

Groups work the same way, using the group's display name, which saves adding people one at a time. Microsoft's overview of Entra authentication for Azure SQL and the configuration guide cover the rest.

If it does not connect

  • "Client with IP address ... is not allowed to access the server" (Msg 40615). The sign-in worked, but the Azure SQL firewall is blocking your network. Add your address in the Azure portal under the server's networking settings, or ask whoever manages it. See Azure SQL firewall rules.
  • Login failed for a user that should exist. Check the CREATE USER ... FROM EXTERNAL PROVIDER step above, and that you are connecting to the database the user was created in.
  • "Tenant not found" (AADSTS90002). Your login's domain is not the domain your directory uses for sign-in. Enter the tenant explicitly, as described above.
  • The sign-in window was closed or timed out. Just connect again. Device codes expire after about 15 minutes, so a new one is issued each time.
  • Signed in as the wrong account. The error names the account Microsoft used. Connect again and choose the right one in the account picker, or correct the login.

Where to get it

Entra ID sign-in is in the current releases for macOS, iPhone and iPad, in both apps. It is not in the Android apps yet. If you are new to SQL Server on the Mac, our guide to connecting to SQL Server from a Mac walks through the rest of the connection settings.

If your organization's sign-in setup does something we have not covered here, please open an issue on GitHub with the error you see. We would like to hear about it.


Tags: Feature Microsoft SQL Server

SQLPro Studio is now available on Android

Posted by Kyle Hankinson September 11, 2026


SQLPro Studio has been a native database client on the Mac since 2015, and on iPhone, iPad and Windows for years now. Today it comes to the platform people have asked about most: SQLPro Studio is available on Google Play for Android phones and tablets.

Get SQLPro Studio on Google Play

It is a native Android app, written in Kotlin, with the same database drivers that power the desktop and iOS versions. There is no web view, no Java desktop runtime and no remote service in the middle. The app talks to your database directly, the same way it does on your Mac.

SQLPro Studio for Android running a query with the results grid below the editor The database tree in SQLPro Studio for Android showing tables, views and columns

What is in the first release

The databases you already use. MySQL and MariaDB, PostgreSQL (including hosted services such as Amazon RDS, Azure and Heroku), Microsoft SQL Server 2005 and later, Oracle, MongoDB, SQLite and more. Connections are per engine, so a MySQL connection gets the MySQL editor and the MySQL tree, exactly as on the desktop.

A real query editor. Syntax highlighting with light and dark themes, autocompletion for tables and columns, several query tabs open at once, find and replace, automatic formatting, and the choice of running one statement, the current selection or the whole script.

Browse and edit, not just read. A context aware database tree gives quick access to tables, views, columns and indexes. Tap a table to see its rows, then edit, insert or delete rows directly in the grid. A table designer creates and alters tables, and results export to CSV, JSON or XML. Query history and saved favourites are there too.

Editing a row in SQLPro Studio for Android SQLPro Studio for Android in the dark theme

Secure connections. SSH tunnelling with password or private key authentication, SSL and TLS options per engine, and a scan of the local network to find database servers. Connection details are stored in the Android keystore on the device. A biometric app lock (fingerprint or face) keeps the app closed to anyone else who picks up your phone.

Sample databases built in. Not near your own server? The app ships with sample connections so you can explore the editor, the tree and the grid without setting anything up.

Licensing

SQLPro Studio for Android is free to download. A Premium unlock is needed to interact with result sets, and there are two ways to get it:

  • Use the key you already have. If you subscribe to SQLPro Studio (monthly or yearly), enter your existing license key in the Android app and it unlocks. Student license keys work the same way. Subscriptions now cover macOS, iOS, Android and Windows.
  • Buy inside the app. Google Play offers a monthly or yearly subscription and a one time Lifetime purchase, managed through your Play account.

One note for Lifetime customers: lifetime licenses have always been per platform (a macOS lifetime key does not unlock Windows, and the same applies to Android). An Android lifetime license is bought through Google Play inside the app.

SQLPro for MySQL and SQLPro for MSSQL too

If you only work with one database engine, the single-database apps are also on Google Play:

They share the same code as the Studio app, and a SQLPro Studio subscription key unlocks them as well.

Requirements

Android 10 or later, on phones and tablets, in portrait or landscape. The app follows your system light or dark setting.

Feedback

This is the first Android release, and the roadmap is driven by what people ask for. If something looks wrong, or a feature you rely on from the desktop app is missing, please open an issue on GitHub or reach out through the support page.


Tags: Feature

SQLPro Keyboard Shortcuts

Posted by Kyle Hankinson July 27, 2026


Most of the time you spend in a database client is spent in three places: the query editor, the results grid, and the connection sidebar. Moving between them with the mouse works, but it is the slowest way to do it. This article lists every keyboard shortcut ships with, notes which actions deliberately arrive unassigned, and shows how to rebind any of them.

Where the shortcuts live

On macOS, open Preferences (Cmd + ,) and choose Keyboard in the sidebar. Every shortcut listed below has its own row. Click the field beside an action, press the combination you want, and it is saved immediately. There is no Apply button.

To remove a binding, click the field and press the delete button that appears at its right edge. To restore an individual shortcut, clear it and reopen the window.

On Windows, open Preferences and choose Keyboard. The Windows build currently exposes a smaller set of rebindable actions than the macOS build; the table further down lists what is configurable today.

macOS defaults

Running queries

Action Default
Query execution Shift + Cmd + E
Query execution (secondary) not assigned
Format query Shift + Cmd + K
Comment/uncomment Cmd + -

Query execution (secondary) exists so you can bind a second key to the same action. A common setup is to leave the primary at Shift + Cmd + E and add Cmd + Return as the secondary, which matches the muscle memory from a lot of other tools.

Comment/uncomment works on the current line, or on every line touched by the selection. It uses -- followed by a space, which matters for MySQL, where a comment marker without trailing whitespace is not treated as a comment.

Connections and navigation

Action Default
Connect Shift + Cmd + C
Focus database tree Ctrl + D
Focus database tree search Ctrl + F
Previous tab Shift + Cmd + [
Next tab Shift + Cmd + ]

Ctrl + F jumps straight to the sidebar filter, which is usually faster than scrolling a large schema. Note that these two use Ctrl rather than Cmd, so they do not collide with the standard macOS find and duplicate shortcuts in the editor.

Alongside the tab shortcuts above, Cmd + 1 through Cmd + 9 switch directly to a tab by position. That behaviour is on by default and can be turned off with the checkbox in the same Keyboard preferences pane, which is worth doing if you would rather those keys stay free.

Results

Action Default
Hide/show query results Cmd + K
Find column Cmd + B
Toggle results/messages not assigned
Copy selected with headers as CSV not assigned
Export full result set as CSV not assigned
Export full result set as JSON not assigned
Export full result set as XML not assigned

Find column is the one people tend to miss. On a result set that is a hundred columns wide, Cmd + B beats horizontal scrolling.

The five unassigned actions here are the ones worth setting up first, because they have no default and are easy to reach for repeatedly. If you export the same result set shape every day, giving CSV export a binding removes several clicks each time.

Text editing

Action Default
Make uppercase not assigned
Make lowercase not assigned

Both are unassigned by default. They apply to the current selection in the editor.

Multiple cursors

Multi-cursor editing has its own set of keys, and they are not configurable:

  • Hold Option and drag the mouse up or down between lines
  • Cmd + Option + ↑/↓ to add cursors above or below
  • Shift + Option + I turns a multi-line selection into one cursor per line

Once several cursors are active, the usual text-movement keys apply to all of them at once: ←/→ by character, Option + ←/→ by word, adding Shift to any of those to select rather than move. Cmd + Delete deletes to the end of the next word from every cursor, and Option + Delete deletes to the end of the line.

Windows defaults

Action Default
Query execution Ctrl + Shift + E
Format query Ctrl + K
Hide/show query results Ctrl + R
Query history Ctrl + Shift + H

The first three are rebindable from Preferences > Keyboard. Query history has a working default but no row in the preferences pane yet, so it cannot currently be changed.

If you are coming from SQL Server Management Studio, the layout will feel close but not identical. Ctrl + K is format-query here rather than the first half of a chord, so the SSMS comment pair Ctrl + K, C and Ctrl + K, U do not carry over.

Picking bindings that stick

Two things are worth knowing before you rebind much.

Shortcuts are validated as you set them. If you choose a combination the system has already claimed, or one already used by another action in , the field will reject it rather than silently create a conflict. Reassigning an action to the combination it already has is allowed, so you can safely re-enter the same keys.

Your choices are stored per application rather than per connection, so a binding you set while working against Postgres applies just as well when you open a SQL Server connection later.

If a shortcut you want is missing

The list above is what exists today. If there is an action you reach for constantly and it has no row in the Keyboard pane, that is worth telling us about, because the pane is straightforward to extend and requests genuinely drive what gets added. The same goes for defaults that feel wrong for your platform.


Tags: Feature Support

Export from to CSV, JSON or XML

Posted by Kyle Hankinson August 9, 2023


export to CSV, JSON or XML

You can use to export a table or view directly, or to export the results of a result set. Results can be exported to CSV, JSON or XML.

To export from a table or view, find the target in the database tree and right click on it. Choose 'Export as', then pick from either CSV, JSON or XML from one of the submenus.

Similar, when exporting from a results set either right click (or single click the arrow at the top left of resutls) and choose 'Export result set as' and pick from one of the options.

Video example:


Tags: MySQL Feature PostgreSQL Microsoft SQL Server SQLite Snowflake

Features

Posted by Kyle Hankinson August 9, 2023


Feature list

A list of some of SQLPro's features.

  • Intellisense/SQL autocompletion
  • Syntax highlighting with customizable themes (including dark)
  • Tabbed based interface for an optimal user experience
  • Context aware database tree navigation, including quick access to tables, views, columns, indexes and much more!
  • SQL Beautifier/formatter
  • Database wide searching
  • NTLMv2 supported (but not required)
  • Netbios support
  • Master password support for additional security
  • Supports Handoff from iOS to macOS
  • Cloud support (Amazon RDS, Microsoft Azure, Heroku and many others)
  • Support for multiple result sets at once
  • Inline results editing
  • Automatic foreign key detection
  • No Java. SQLPro is native code
  • Intuitive interface
  • Import from CSV, JSON or XML
  • Export to CSV, JSON or XML (link)
  • Multiple cursor support (link)
  • Execute query in cursor range (link)

Tags: Feature

More articles: