Sql-server – How to do an in-place upgrade of SQL Server 2005 Express to SQL Server 2008 R2 Express

sql serversql-server-2008-r2

I would like to upgrade my SQL Server 2005 Express instance which is installed using this command:

SQLEXPR.EXE/qs /action=INSTALL /IACCEPTSQLSERVERLICENSETERMS 
   /FEATURES=SQLEngine /INSTANCENAME=ABCD
   /SQLSVCACCOUNT="NT AUTHORITY\SYSTEM" /SECURITYMODE=SQL
   /SAPWD=abc#Wd1234 /TCPENABLED=1 /NPENABLED=1

but when I am trying to upgrade the server instance ABCD with this command

SQLEXPR_x64_ENU.exe /q /ACTION=upgrade /INSTANCENAME=ABCD /IACCEPTSQLSERVERLICENSETERMS=1

the instance ABCD is not upgraded to SQL Server 2008 R2 Express.

When I check ADD/Remove program list of OS, it shows me both SQL Server 2005 and 2008 R2 are installed (that may be I am doing a side by side upgrade but not a in-place one) and when I click on start button of OS and then goes to SQL Server 2008 R2 folder in AllPrograms list. It has a sub folder configuration tools which contains SQL Server Installation center. When I open the installation center it show various option to install SQL Server 2008 R2 or to upgrade from 2005 etc. I am confused whether SQL Server 2008 R2 is even installed on my machine after running the above 2nd query. Please help me where I am going wrong.

Best Answer

You have a 32-bit instance of SQL Server 2005 and are trying to upgrade to a 64-bit instance of a newer version. This is not supported; you can check any of the upgrade documents about this, e.g. http://msdn.microsoft.com/en-us/library/ms143393(v=sql.105).aspx:

Cross-platform upgrade is not supported. You cannot upgrade a 32-bit instance of SQL Server to native 64-bit.

It says stuff about WOW64 but my recommendation for your scenario is to install a separate 2008 R2 instance, backup/restore your databases from the 2005 instance (and transfer jobs/logins), then remove that instance. You will need to choose a different instance name or use a default instance.