Upgrading or Replacing the SQL Local DB for Local Host Cache for 1912 CU1

By Ray Davis posted 08-12-2020 08:01 PM

  

There has been some recent change to the LTSR article around Local Host Cache upgrades:

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/upgrade-migrate/upgrade.html#replace-sql-server-express-localdb

  • When upgrading Delivery Controllers to Citrix Virtual Apps and Desktops version 1912 or 2003: Upgrading SQL Server Express LocalDB is optional. Local Host Cache works properly, with no loss of functionality, regardless of whether you upgrade SQL Server Express LocalDB. We added the option to move to a newer version of SQL Server Express LocalDB in case there are concerns about the end of support from Microsoft for SQL Server Express LocalDB 2014.
  • When upgrading Delivery Controllers to Citrix Virtual Apps and Desktops versions newer than 2003: The minimum supported version is SQL Server Express 2017 LocalDB Cumulative Update (CU) 16. If you originally installed a Delivery Controller earlier than version 1912, and have not replaced SQL Server Express LocalDB with a newer version since then, you must replace that database software now. Otherwise, Local Host Cache will not work.


As you can see here, at one time it stated that you needed to upgrade, or it would not work. However, it doesn’t seem that it 100% the case anymore. I think that’s why Citrix updated the doc. 

Also as you can see here, some had the same concerns or questions around it. I most certainly did. 



  1. So, let’s get started. I always do a snapshot first, which is completed. 
  1. Complete the upgrade of your Citrix Virtual Apps and Desktops components, databases, and site. (Those database upgrades affect the site, monitoring, and configuration logging databases. They do not affect the Local Host Cache database that uses SQL Server Express LocalDB.)
  1. As you can see, I am on 1912 CU1 and have MSQL Express 2014.





  1. On the Delivery Controller, download PsExec from Microsoft. See the Microsoft document PsExec v2.2.





  1. Stop the Citrix High Availability Service



Wlw5Q31NjwtR8zWz_u1gURRV68pD5Q4IC3YqblfnJ4o1XIY2W-rMFKQRwpxXJeQgFKVVA24jwjOf2KWmKCbbA9K7uzbvIn4qyx5EKWM25CzGJkKT3dQt71myVQQDR0aETvwxM-o

  1. Open CMD as Admin and open PsExec.exe
psexec -i -u “NT AUTHORITY\NETWORK SERVICE” cm





  1. Move to the folder containing SqlLocalDB.
cd “C:\Program Files\Microsoft SQL Server\120\Tools\Binn”





  1. Stop and delete CitrixHA (LocalDB).  If you don’t stop it, you will get this error (me not paying attention):


SqlLocalDB stop CitrixHA

SqlLocalDB delete CitrixHA





  1. Remove the related files in C:\Windows\ServiceProfiles\NetworkService



  1. Uninstall SQL Server Express LocalDB 2014 from the server, using the Windows feature for removing programs:





  1. Install SQL Server Express LocalDB 2017. In the Support > SQLLocalDB folder on the Citrix Virtual Apps and Desktops installation media, double-click sqllocaldb.msi





  1. Reboot the server and make sure this is started “Citrix High Availability Service.”





  1. Logged on, and it took about 15 seconds to show up.




  1. Then 60 seconds or so on this





  1. Check if the CitrixHA Db is created. CitrixHA is re-created the next time configuration sync occurs. After a minute or two, use the SqlLocalDB utility to confirm that CitrixHA has been re-created.
SqlLocalDB i

CitrixHA

MSSQLLocalDB


Example:

While still in the PsExec session run this:

C:\Program Files\Microsoft SQL Server\120\Tools\Binn>
SqlLocalDB i

CitrixHA

MSSQLLocalDB






  1. You will see this until you do the second broker:





  1. After I did my second Broker this was in the logs






  1. But then, I see this almost every 2 minutes. I remember reading about this. But I thought it was fixed many versions ago. 





Did some google on the Errors and came up with the 2 links below:

https://support.citrix.com/article/CTX230775

https://blog.citrix24.com/xendesktop-7-15-local-host-cache-troubleshooting/


LHC DB upgrade reference:

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/upgrade-migrate/upgrade.html#replace-sql-server-express-localdb

Turns out some AD account was deleted over time, and it had some bad SIDs. So, I ran the quick script, to get the output.


Get-BrokerApplication |foreach {if ($_.AssociatedUserNames -match “S-1-5-21”) {$_.Name; $_.AssociatedUserNames -match “S-1-5-21”; “”}}





I went into Studio and deleted them from the location it displayed above. Which was in Published application visibility. Then, based on CTX230775, I needed to redo the LHC DB. So I quickly ran through the process and it fixed the error. 

In summary, this is how I upgraded the LHC DB and some minor troubleshooting. Hope it helps someone.


#WindowsVirtualDesktops

Thanks again for all the help and tips I've received from everyone on Slack. 
Also check out Citrix Heroes, a dedicated site for people like us: https://community.citrixhero.com/