Upgrade SQL Express for improved performance with Veeam
I had a comment on here stating that in-memory OLTP is not used by Veeam which prompted me to research this issue a little more. After a brief chat with @Gostev on the matter, this is indeed the case. The Word from Gostev weekly e-mail from November 2016 states the following:
By the way, some of you may have a question why 9.5 still ships with SQL Server 2012 Express, when back 1.5 years ago I explicitly recommended hosting Veeam configuration database on SQL Server 2014 to all users with large environments (for its new features like cardinality estimation). Well, the answer is pretty simple – in all these years, we could not find SQL Server 2014 package that we are actually able to install reliably in an unattended manner! And SQL Server 2016 is just too young to jump, especially when we’re reporting its bugs to Microsoft at the same time. So, the only change in 9.5 is that we’re now shipping with the latest and greatest SQL Server 2012 Express *SP3* – and we are hoping to switch to SQL Server 2016 Express in future releases
So, cardinality estimation is where it is at. You can check out more information about this here.
One of the take away for me from VeeamON was that upgrading the version of SQL backing Veeam to either 2014 or 2016 will yield great improvements in performance. Now even the latest version of Veeam 9.5 only ships with SQL 2012 Express. Issues cited by Veeam with deploying newer versions of SQL express at install time of backup and replication are the reason why it does not ship with it. So let’s take a look at some of the enhancements and reasons why you should upgrade. These features are available in Express edition.
In memory OLTP (Online Transaction Processing)
I’m not going to lie, I am no SQL expert. However, moving anything from disk to in memory is going to improve its speed. OLTP is moved to in memory starting with SQL server 2014. You can read more about this feature here
Advanced Security – Always encrypted data
Encrypted data, gotta be a good thing right? Now from what I can gather this won’t be enabled out the box but essentially it allows for a demarcation of data access between application owners and database owners. Read more here
The upgrade process
Run up services.msc and take a look at what version of SQL you are currently running
Search the interwebs for SQL Express 2016 download and grab a copy of it. It downloads as an update launcher which will download the required binaries as you step through the installation wizard.
Choose Custom install
Choose media location to download the product binaries
Make a cup of covfefe whilst you wait for the download to complete
NOTE – Before starting the upgrade, Disable all Veeam jobs from the Veeam console and stop all Veeam services. Make sure you have a backup of the database. You have been warned!
Launch the upgrade wizard
Accept the EULA
Check for updates during install
Choose the instance of SQL you would like to upgrade, this is the instance we took at look at the beginning of this process. Note that version 11 = SQL 2012
Grab more covfefe
And done, reboot the server
Take a look at the SQL server version following the reboot. V13 is SQL 2016. Remember it was V11 prior to the upgrade.
Remember to enable the Veeam services at this point.
And that’s it, easy as pie, piece of cake, jobs a goodun.