# 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/).
