I recently performed an in-place upgrade of a SQL Server from SQL 2008 R2 to SQL 2012. All seemed to work well, until I tried taking a database backup. That failed.
This particular SQL Server uses LiteSpeed for backups and the following error was being returned when it ran:
Msg 17750, Level 16, State 0, Procedure xp_backup_database, Line 1
Could not load the DLL xpSLS.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.).
A quick file search on the server showed the DLL was located at D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn. From the path, we can tell that is obviously a SQL 2008 R2 directory. Because the newer version of SQL Server installs in a different directory, the DLL used by LiteSpeed was no longer where SQL Server could find it. I copied the file to the corresponding location in the SQL 2012 folder hierarchy: D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn. Once that was done, my backups worked fine.
As DBAs, when we plan upgrades, we tend to think about differences in how the database engine works between different versions and we focus on those differences in determining if an upgrade will cause any application issues. It’s easy to overlook third party apps. And even if we did check to verify those apps are compatible (and I did check that LiteSpeed was compatible with SQL 2012), it’s often easy to overlook some simple facts – like program paths will be different after an upgrade.