Well here was a wasted hour trying to figure this one out. It should have been so easy!
Problem: Installed a lab App-V 5 Management/Publishing Server with default instance database on that server. Works great. Install second Management/Publishing server needing to use the remote database. Fails.
What could have been the problem: (but wasn’t)
- Windows Firewall on first server with the database. You need port 1433 open.
- Need to give machine account for new server permissions on the database.
- Name resolution, need to use fully qualified names, etc.
- User login account (used the same domain admin account on both servers).
- Remembering to reset the Management Service (iisreset) after making any change to the configuration.
What could not have been the problem: (but needed to be done anyway):
- Using the first Management Server, add the Second server into the list of authorized publishing servers. (This only affects the rights of the publishing server to talk to the management server).
Bold face verification of things that were not the problem:
- Ping the database server by name.
- Install Sql Management tools on new server and connect and successfully query the database.
Actual Problem: The settings in the Windows Registry HKLM\SOFTWARE\Microsoft\App-V\Server\ManagementService were incorrect. Furthermore, https://social.technet.microsoft.com/wiki/contents/articles/18457.app-v-5-0-sp1-change-sql-server-name-sql-instance-name-database-name-or-services-port-number.aspx was misleading me for some reason.
That post suggests the following values (where {name} is something you substitute with the real values):
Registry Name | Registry Value |
MANAGEMENT_DB_NAME | {NameOfDb} |
MANAGEMENT_DB_SQL_INSTANCE | {InstanceName} |
MANAGEMENT_DB_SQL_SERVER | {DbServer\InstanceName} |
MANAGEMENT_DB_SQL_SERVER_NAME | {DbServer} |
In my case, using the default instance database server with the default database name on the remote server, this seemed to indicate I should use this:
Registry Name | Registry Value |
MANAGEMENT_DB_NAME | AppVManagement |
MANAGEMENT_DB_SQL_INSTANCE | MSSQLSERVER |
MANAGEMENT_DB_SQL_SERVER | Av5Svr1\MSSQLSERVER |
MANAGEMENT_DB_SQL_SERVER_NAME | Av5Svr1 |
This did not work! Swapping in the fully qualified server names or even IP address was no help. Trying MSSQLSERVER$ did not help.
Viewing the working server, the values look like this:
Registry Name | Registry Value |
MANAGEMENT_DB_NAME | AppVManagement |
MANAGEMENT_DB_SQL_INSTANCE | |
MANAGEMENT_DB_SQL_SERVER | . |
MANAGEMENT_DB_SQL_SERVER_NAME |
For these values to work, it seems that:
- MANAGEMENT_DB_NAME must default to the default instance when not specified.
- MANAGEMENT_DB_SQL_INSTANCE of “.” (a period character) specifies the local server (the period) and lacking a specified instance uses the default instance there.
- MANAGEMENT_DB_SQL_INSTANCE must default to the local server when not specified.
So I tried the following:
Registry Name | Registry Value |
MANAGEMENT_DB_NAME | AppVManagement |
MANAGEMENT_DB_SQL_INSTANCE | |
MANAGEMENT_DB_SQL_SERVER | Av5Svr1 |
MANAGEMENT_DB_SQL_SERVER_NAME | Av5Svr1 |
This worked!
PS: Some good links:
- Falco’s Solution for fixing up the Database Scripts to give to your DBA to create the database: https://kirxblog.wordpress.com/2013/12/30/remote-db-for-app-v-5-revised/
- Ralph Jansen’s step-by-step for setting up an AlwaysOn Sql cluster: https://ittechlog.wordpress.com/2014/09/22/setting-up-a-sql-alwayson-availability-group-for-app-v-5/