The SQL Server Evaluation Edition is a great way to get a fully functional and free instance of SQL Server for learning and developing solutions. The edition has a built in expiry of 6 months from the time that you install it. I often install an Eval edition on a machine to set up a test or demo, and then 6 months later it comes as a complete surprise when it suddenly stops working.

 

Needless to say this can be mildly inconvenient, as it typically expires on the day you plan to demo it. It would be nice to get some kind warning.  

This problem is exacerbated in the SQL Server virtual machine images in the Windows Azure gallery. While Azure VM's are in preview the SQL Server platform images are created with Evaluation edition, but the 6 month counter starts ticking when the VM is created rather than when you deploy it. This came to a head recently as a few months went by between platform image refreshes, so people deploying SQL VM images in Windows Azure were seeing them expire a few days later. See this thread for more details. Since then the SQL Server platform image has been refreshed so it won't be expiring for several months.


The problem with Azure VM's will go away soon as fully licensed pay-per-hour images will be available soon, and free trial offers will be available. 

What happens when your SQL instance does expire? What are the options? Particularly if you've developed a working solution and want to put it into production?

One option is to purchase a license and enter the license key in SQL Server Installation Center->Maintenance->Upgrade License.

If you're using an Azure VM another option would be to migrate your application to a new VM.

One thing we've learned from this is that as long as time-bombed images are being used we need to be better at communicating and setting expectations about their expiration.

If you're running an Evaluation edition now, how can you tell when it's due to expire? One way is to run this query...  

  

sp_configure 'show advanced options', 1;
RECONFIGURE

GO

sp_configure 'Agent XPs', 1;
RECONFIGURE

GO

DECLARE @daysleft int
DECLARE @instancename sysname
SELECT @instancename = CONVERT(sysname, SERVERPROPERTY('InstanceName'))
EXEC @daysleft = xp_qv '2715127595', @instancename
SELECT @daysleft 'Number of days left'

GO


That will give you an answer in days until expiry. As of today, the SQL Server gallery image I launched a few days ago has 122 days left, which gives me a few months to do my demos and then forget that it's going to expire. Hopefully by that time I'll have either upgraded it or started with a refreshed or pay per hour image.

- Guy