> ## Documentation Index
> Fetch the complete documentation index at: https://opensre.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure SQL

> Connect Azure SQL so OpenSRE can diagnose database issues and query performance during investigations

When a database alert fires, you need answers fast. OpenSRE connects to your Azure SQL instances to quickly diagnose what's going wrong — checking server health, finding those slow queries that are bogging things down, monitoring resource usage, and analyzing query execution plans to pinpoint bottlenecks.

## What you'll need

Before getting started, make sure you have:

* An Azure SQL Database instance up and running
* Network connectivity from your OpenSRE environment to your Azure SQL server
* Database credentials ready (username and password)
* Your server hostname handy

## Getting connected

### The easy way: Interactive setup

If you prefer guided steps, just run:

```bash theme={null}
opensre integrations setup
```

Pick **Azure SQL** from the menu and follow the prompts.

### The flexible way: Environment variables

Add these to your `.env` file:

```bash theme={null}
AZURE_SQL_SERVER=myserver.database.windows.net
AZURE_SQL_DATABASE=mydb
AZURE_SQL_USERNAME=sqladmin
AZURE_SQL_PASSWORD=your_password
AZURE_SQL_ENCRYPT=true
```

| Variable             | Default                         | Description                               |
| -------------------- | ------------------------------- | ----------------------------------------- |
| `AZURE_SQL_SERVER`   | —                               | **Required.** Azure SQL server hostname   |
| `AZURE_SQL_DATABASE` | —                               | **Required.** Database name               |
| `AZURE_SQL_USERNAME` | —                               | **Required.** SQL authentication username |
| `AZURE_SQL_PASSWORD` | —                               | **Required.** SQL authentication password |
| `AZURE_SQL_ENCRYPT`  | `true`                          | Encrypt your connection for security      |
| `AZURE_SQL_PORT`     | `1433`                          | SQL Server port                           |
| `AZURE_SQL_DRIVER`   | `ODBC Driver 18 for SQL Server` | ODBC driver name                          |

### The permanent way: Integration store

You can also save your connection details to `~/.opensre/integrations.json`:

```json theme={null}
{
  "version": 1,
  "integrations": [
    {
      "id": "azure-sql-prod",
      "service": "azure_sql",
      "status": "active",
      "credentials": {
        "server": "myserver.database.windows.net",
        "database": "mydb",
        "username": "sqladmin",
        "password": "your_password",
        "encrypt": true
      }
    }
  ]
}
```

## Finding your connection details

Your Azure SQL server hostname looks like `myserver.database.windows.net`. You can find it:

1. Open the Azure Portal
2. Navigate to your SQL Database resource
3. Look for **Server name** in the overview panel
4. Copy it and add `.database.windows.net` if needed

## Network access: Firewall setup

Azure SQL uses firewall rules to control who can connect. Make sure OpenSRE can reach your server:

1. In Azure Portal, go to your SQL server → **Security** → **Firewalls and virtual networks**
2. Add your OpenSRE environment's IP address
3. Or check **Allow Azure services and resources to access this server** if running in Azure

<Tip>
  If you're not sure of your IP, start with a permissive rule temporarily, get OpenSRE working, then lock it down.
</Tip>

## Investigation tools

When OpenSRE investigates an Azure SQL-related alert, these diagnostic tools are available:

### Server status

Retrieves service tier, resource utilization, connection counts, and database size. Useful for spotting DTU or vCore throttling.

### Current queries

Lists active sessions and running queries to identify lock contention or long-running operations.

### Slow queries

Surfaces top resource-consuming queries from Query Store or DMVs to pinpoint performance regressions.

### Wait stats

Reports cumulative wait types to identify I/O, lock, or CPU bottlenecks.

### Resource stats

Returns CPU, memory, and I/O utilization metrics for the target database.

## Test the connection

Ready to verify everything works?

```bash theme={null}
opensre integrations verify azure_sql
```

Expected output:

```
Service: azure_sql
Status: passed
Detail: Connected to Azure SQL Database ...
```

## Troubleshooting

| Symptom                       | Fix                                                                                                            |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------- |
| **Connection timeout**        | Add your OpenSRE IP to the Azure SQL firewall rules.                                                           |
| **Login failed**              | Confirm `AZURE_SQL_USERNAME` and `AZURE_SQL_PASSWORD`. Check that SQL authentication is enabled on the server. |
| **SSL/certificate error**     | Keep `AZURE_SQL_ENCRYPT=true`. Install the correct ODBC driver (`ODBC Driver 18 for SQL Server`).              |
| **Permission denied on DMVs** | Grant `VIEW SERVER STATE` and `VIEW DATABASE STATE` to the OpenSRE user.                                       |

## Security best practices

* Use a **dedicated read-only SQL user** for OpenSRE — avoid admin credentials.
* Keep **encryption enabled** (`AZURE_SQL_ENCRYPT=true`) in production.
* Restrict firewall rules to the OpenSRE environment's egress IP.
* Store credentials in `.env` or the integration store, never in source code.
