# Read Scale-Out

## Overview

This section provides instructions on how to configure the optional Read Scale-Out feature, which allows load balancing of SQL Database read-only workloads using a read-only replica rather than a read-write replica. For more information on this feature, see the [Use read-only replicas to offload read-only query workloads](https://learn.microsoft.com/en-us/azure/azure-sql/database/read-scale-out?view=azuresql) Microsoft article.

## Prerequisites

* Make sure to have either a Premium or a Business Critical service tier.
* You must have permissions to make changes to the database in the Azure portal.

## Read Scale-Out configuration

### Step 1: Enable the Read Scale-Out feature in PowerShell

1. Install or update the Azure PowerShell module in PowerShell by running the following commands:

   ```
   Install-Module -Name AzureRM -AllowClobber
   Import-Module -Name AzureRM
   ```

   For more information, see the [Install Azure PowerShell](https://learn.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-0.10.0) Microsoft article.
2. Log in to your Microsoft Azure account in PowerShell by running the following command:

   ```
   Login-AzureRmAccount
   ```

   If you encounter any security issues with the Microsoft Azure sign-in process, then you must manually add `https://login.microsoftonline.com/` and all related websites' URIs to the **Trusted sites** zone in Internet Explorer's Internet Options.
3. Enable the Read Scale-Out feature in PowerShell by running the following command:

   ```
   Set-AzureRmSqlDatabase -ResourceGroupName <resource group> -ServerName <server name> -DatabaseName <database name> -ReadScale Enabled
   ```

   * Replace `<resource group>` with the resource group name.
   * Replace `<server name>` with the server name (e.g. `workflowgen.database.windows.net`).
   * Replace `<database name>` with the database name (e.g. `WFGEN`).

You can also enable Read Scale-Out feature using the [Azure SQL Database Rest API](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-read-scale-out#enabling-and-disabling-read-scale-out-using-the-azure-sql-database-rest-api).

### Step 2: Configure WorkflowGen

1. Go to the **Database** section on the Configuration Panel **General** tab.\
   In the **Master database connection string** field, add the `ApplicationIntent=ReadWrite` parameter to the existing connection string and click **Test** to test the database availability. Here's an example of a connection string:
2. ```
   Data Source=workflowgen.database.windows.net;Initial Catalog=WFGEN;User ID=wfgen_user;Password=Admin123!;encrypt=true;trustServerCertificate=false;ApplicationIntent=ReadWrite;
   ```
3. In the **Read-only database connection string** field, add (or edit) the connection string with the new `ApplicationIntent=ReadOnly` parameter, and click **Test** to test the database availability. Here's an example of a connection string:

   ```
   Data Source=workflowgen.database.windows.net;Initial Catalog=WFGEN;User ID=wfgen_user;Password=Admin123!;encrypt=true;trustServerCertificate=false;ApplicationIntent=ReadOnly;
   ```
4. Check the **Multi-database** option.\
   Check the User Portal components and modules that will use the Read-only database. For more information about this, see [Replica database](https://docs.workflowgen.com/admin/configuration-panel#replica-database) in the [WorkflowGen Administration Guide](https://docs.workflowgen.com/admin/).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.workflowgen.com/azure/8.3/read-scale-out-preview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
