Connect your Looker instance to a Microsoft Azure SQL Database to
analyze your data. This page explains how to configure secure authentication,
define database permissions, and set connection parameters in
Looker, including options to encrypt network traffic and protect
your data in transit.

## Encrypting network traffic

It is a best practice to encrypt network traffic between the Looker application and your database. Consider one of the options that are described on the [Enabling secure database access](https://docs.cloud.google.com/looker/docs/enabling-secure-db-access.md.txt) documentation page.

To learn more about using SSL encryption, see the [Microsoft documentation](https://azure.microsoft.com/en-us/documentation/articles/cloud-services-configure-ssl-certificate/).

## Users and security

Looker authenticates to your database using SQL Database Authentication. Using a domain account is not supported.

To create an account, run the following commands, changing `some_password_here` to a unique, secure password:

```sql
CREATE LOGIN looker
  WITH PASSWORD = 'some_password_here';
USE MyDatabase;
CREATE USER looker FOR LOGIN looker;
GO
```

Looker must be authorized to detect and stop running queries, which requires the following permissions:

```sql
KILL DATABASE CONNECTION
VIEW DATABASE STATE
```

To grant these permissions, run the following command:

```sql
GRANT KILL DATABASE CONNECTION TO looker;
GRANT VIEW DATABASE STATE to looker;
```

## Temp schema setup

Create a schema owned by the Looker user:

```sql
CREATE SCHEMA looker_scratch AUTHORIZATION looker;
```

## Creating the Looker connection to your database

In the **Admin** section of Looker, select **Connections** , and then click **Add Connection**.

Fill out the connection details. The majority of the settings are common to most database dialects. See the [Connecting Looker to your database](https://docs.cloud.google.com/looker/docs/connecting-to-your-db.md.txt) documentation page for information. The following fields have additional information that applies to Microsoft Azure SQL Database:

- **Dialect** : Select **Microsoft Azure SQL Database**.
- **Remote Host** and **Port**: Enter the hostname and port (the default port is 1433).

  If you need to specify a non-default port other than 1433 and your database requires the use of a comma instead of a colon, you can add `useCommaHostPortSeparator=true` in the **Additional JDBC parameters** field further down in the connection settings, which will allow you to use a comma in the **Remote Host:Port** field. For example:

  `jdbc:sqlserver://hostname,1434`

To verify that the connection is successful, click the **Test Connection** button in the **Status details** section at the bottom of the **Connections Settings** page.

If Looker displays **Can Connect** , press **Connect** to create the connection.

Your database connection is then added to the list on the Looker [**Connections**](https://docs.cloud.google.com/looker/docs/admin-panel-database-connections.md.txt) **Admin** page.

## Supported JDBC parameters

For Microsoft Azure SQL Database, Looker supports the following JDBC parameters in the [**Additional JDBC parameters**](https://docs.cloud.google.com/looker/docs/connecting-to-your-db.md.txt#additional_jdbc_parameters) field for the connection. See the documentation for your database for information on these parameters.

- `accessToken`
- `ApplicationIntent`
- `applicationName`
- `authentication`
- `authenticationScheme`
- `cancelQueryTimeout`
- `columnEncryptionSetting`
- `database`
- `databaseName`
- `disableStatementPooling`
- `domain`
- `enablePrepareOnFirstPreparedStatementCall`
- `Encrypt`
- `failoverPartner`
- `fips`
- `gsscredential`
- `hostNameInCertificate`
- `instanceName`
- `Integrated Security`
- `integratedSecurity`
- `jaasConfigurationName`
- `keyStoreAuthentication`
- `lastUpdateCount`
- `locktimeout`
- `loginTimeout`
- `msiClientId`
- `multiSubnetFailover`
- `packetSize`
- `password`
- `portNumber`
- `queryTimeout`
- `realm`
- `responseBuffering`
- `selectMethod`
- `sendStringParametersAsUnicode`
- `sendTimeAsDatetime`
- `serverName`
- `serverPreparedStatementDiscardThreshold`
- `serverSpn`
- `transparentNetworkIPResolution`
- `trustServerCertificate`
- `useBulkCopyForBatchInsert`
- `useCommaHostPortSeparator`
- `user`
- `workstationID`
- `xopenStates`

## Feature support

For Looker to support some features, your database dialect must also support them.

Microsoft Azure SQL Database supports the following features as of Looker 26.22:

| Feature | Supported? |
|---|---|
| Looker (Google Cloud core) | Yes |
| Symmetric aggregates | Yes |
| Derived tables | Yes |
| Persistent SQL derived tables | Yes |
| Persistent native derived tables | Yes |
| Stable views | Yes |
| Query killing | Yes |
| SQL-based pivots | Yes |
| Time zones | Yes |
| SSL | Yes |
| Subtotals | Yes |
| JDBC additional params | Yes |
| Case-sensitive | No |
| Location type | Yes |
| List type | No |
| Percentile | No |
| Distinct percentile | No |
| SQL Runner Show Processes | Yes |
| SQL Runner Describe Table | Yes |
| SQL Runner Show Indexes | Yes |
| SQL Runner Select 10 | Yes |
| SQL Runner Count | Yes |
| SQL Explain | No |
| OAuth 2.0 credentials | No |
| Context comments | Yes |
| Connection pooling | No |
| HLL sketches | No |
| Aggregate awareness | Yes |
| Incremental PDTs | No |
| Milliseconds | Yes |
| Microseconds | Yes |
| Materialized views | No |
| Period-over-period measures | No |
| Approximate count distinct | No |
| In-database analytic models | No |
| Custom calendars | No |