Configure the RDS 2016 HA Database on Azure SQL PaaS


One of the new features which will be introduced in Windows Server 2016 Remote Desktop Services is storing the RD Database in Azure ‘SQL Database as a Service’. Since Windows Server 2016 is now in the Technical Preview stage we can test this feature. More information about all improvements can be found here. In this blogpost I want to describe the end-to-end process to update your existing RDS single Connection Broker environment to a RDS High-Available Connection Broker environment and storing the RD Database on Azure SQL.

Let’s first create the SQL database with Powershell and then configure RD Connection Broker High Availability with the database hosted on Azure:

  1. Create the SQL PaaS database server on Azure and create a firewall rule allowing applications hosted on Azure to access the database:
    #Create the SQL Server
    $cred = Get-Credential -Message 'Enter the SQL Admin credentials'
    New-AzureRmSqlServer -ResourceGroupName 'RG-RDS2016TP5' -ServerName 'azuresqldb01' -Location "West Europe" -ServerVersion '12.0' -SqlAdministratorCredentials $cred
    New-AzureRmSqlServerFirewallRule -ResourceGroupName 'RG-RDS2016TP5' -ServerName 'azuresqldb01' -FirewallRuleName 'RuleFromAzure' -StartIpAddress '' -EndIpAddress ''
  2. Now Create the database
    #Create the SQL Database
    New-AzureRmSqlDatabase -ResourceGroupName "RG-RDS2016TP5" -ServerName "azuresqldb01" -DatabaseName "sql_rddb" -Edition "Standard" -RequestedServiceObjectiveName "S1"
  3. Now Copy the ODBC connection string from the database settings:
  4. Replace "your_password_here" with the password from step 1. You'll use this entire string, with your included password, when connecting to the database from your RD Connection Broker.
  5. Install the SQL Native Client on your RD Connection Broker which can be downloaded here.
  6. Configure RD Connection Broker High availability with the following PowerShell command:
    Set-RDConnectionBrokerHighAvailability -ConnectionBroker 'broker.domain.ext' -DatabaseConnectionString 'Driver={SQL Server Native Client 11.0};,1433;Database=sql_rddb;Uid=<your username here>@azuresqldb01;Pwd=<your password here>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;' -ClientAccessName 'rdfarm.domain.ext'

    Replace <your username here> and <your password here> with your values. Change also the Connection Broker Server Name and the Client Access Name.

  7. The next step is to configure your internal DNS environment so that the used ClientAccessName can be resolved from the RD Gateway Servers. This can be done by editing the hosts file locally on the Gateway Servers or implementing split DNS on your central DNS servers.
  8. After the DNS configuration you need to add the ClientAccessName to the Local Computer Group of your RD Gateway Servers. See below my configuration:
  9. After these steps your RD Connection Broker High Availability configuration is made and you now can add additional Connection Brokers by executing this PowerShell command:
    Add-RDServer -Role RDS-CONNECTION-BROKER -Server '<New RD Broker FQDN>' -ConnectionBroker '<Current RD Broker FQDN>'
  10. Now your RDS 2016 environment has 2 RD Connection Brokers with the database stored on Azure SQL Databases

But what about performance?

My short answer at this moment is that I don't have production tests done with the RD Connection database on Azure SQL. But with Azure SQL you will get so useful information about the load on the database and if needed Azure will also you same performance recommendations. With this information you can easily add some performance to your database.

2 thoughts on “Configure the RDS 2016 HA Database on Azure SQL PaaS

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.