How to modify Windows Service Bus Connection string in an existing Service Bus Farm
If you have an already configured Service Bus Farm, and you need to modify some or all of the Service Bus Connection strings (Gateway, SBFarm and Message Containers ) for whatever reason, such as SQL databases have been moved/renamed, wanted to add ‘Failover Partner’ attribute for Mirroring support, etc. please follow below steps (no information will be lost):
Please notice that Direct update of DB is not possible as – to adhere to Windows Server Security Guidelines all Secure strings are encrypted. Also – modifying db is not just enough – as there are many places where this info is present.
As an example, let’s imagine that we need to modify SB connection string to add “Failover Partner” attribute. The cmdlet would be like below:
1. Execute "SB-GetFarm" cmdlet, to collect information about your current configuration: Certificates thumbprint, connection string, RunAsAccount , MessageBrokerPort , etc. You will need that info on step 3.
2. Remove all nodes from the Service Bus Farm
3. On one of the farm nodes, Restore the SBFarm using the new Connection string. As an example, let’s imagine that we need to modify SB connection string to add “Failover Partner” attribute. The cmdlet would be like below:
Restore-SBFarm -FarmCertificateThumbprint F91C37410FBE53B92E1B24FAC7A0D82EA4391B81 -GatewayDBConnectionString "Data Source=<SQL Server>;Failover Partner=<SQL Mirroring Server>;Initial Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=<SQL Server>;Failover Partner= Mirroring Server>;Initial Catalog=SbManagementDBNew;Integrated Security=True;Encrypt=False" -EncryptionCertificateThumbprint 91C37410FBE53B92E1B24FAC7A0D82EA4391B81 -RunAsAccount <YourAccount> -MessageBrokerPort <MessageBrokerPort> -HttpsPort <HttpsPort> -TCPPort <TCPPort>
Note: The Restore-SBFarm cmdlet creates a new Service Bus for Windows Server farm database (SbManagementDBNew). You can delete the old Service Bus for Windows Server farm database. Once above cmdlet is executed, next two connections strings will have been changed: GatewayDBConnectionString and SBFarmDBConnectionString
4. On all new farm nodes, run the Add-SBHost :
$secure_string_pwd = convertto-securestring "<Your Password>" -asplaintext -force
Add-SBHost -SBFarmDBConnectionString "Data Source=<SQL Server>;Failover Partner=<SQL Mirroring Server>;Initial Catalog=SbManagementDBNew;Integrated Security=True;Encrypt=False" -RunAsPassword $secure_string_pwd -EnableFirewallRules $T
5. Call the Stop-SBFarm cmdlet to stop all Service Bus for Windows Server services on all hosts, that’s a prerequisite for next step.
6. Restore the message containers. This step is required to modify the connection string to the message containers. Remember that you can have more than one (For more information, see the Get-SBMessageContainer cmdlet).
Restore-SBMessageContainer -Id 1 -ContainerDBConnectionString "Data Source=<SQL Server>;Failover Partner=<SQL Mirroring Server>;Initial Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False"
7. Call the Start-SBFarm cmdlet to start all Service Bus for Windows Server services on all hosts.
Hope you find it interesting!!
Comments
Anonymous
June 01, 2015
Hi, do you know if the Workflow Manager itself can also be set to use the failover partner? Or only the Service Bus needs to be configured accordingly? Thanks, MiklosAnonymous
August 31, 2015
Dear Miklos, Mirroring is officially supported for WFM databases as described at msdn.microsoft.com/.../jj193487(v=azure.10).aspx Please, follow steps described at blogs.msdn.com/.../how-to-modify-workflow-manager-connection-string-in-an-existing-wmf-farm.aspx to add "Failover Partner" atribute in WFM connection strings. Kind Regards, FelipeAnonymous
August 25, 2016
What about restoring the Gateway DB? https://msdn.microsoft.com/en-us/library/dn441405.aspx#BMK_SBDR15- Anonymous
September 23, 2016
Hi Casey,Please, can you elaborate a bit further your question? Not sure to get it.To modify SB connection strings it is not required to restore Gateway Db. When executing Restore-SBFarm cmdlet it changed connection string for both GatewayDB and SBFarmDB.Kind Regards,Felipe.
- Anonymous