How "not" to update SQL Azure – updated

For an update to this article please read my new blog post.

How “not” to update SQL Azure – continued

Well what an eventful day in “The Cloud” yesterday was, and I don’t reckon today is going to be much better.

On Friday 5th August we received an error about SQL Azure Backup from a customer. Suddenly the program would no longer connect to SQL Azure, I assumed something had changed in his database so I postponed investigating until Monday.

Also on Friday I was experimenting with the new BACPAC CTP and I couldn’t get DacImportExportCli.exe or the API to connect to my Azure databases at all. The program was simply failing at first attempt with.

ExtractDac: Failure Extracting Database ‘widgetdev’ Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: Failed to retrieve data for this request. —> Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. —> System.Data.SqlClient.SqlException: Reference to database and/or server name in ‘master.sys.databases’ is not supported in this version of SQL Server.
   at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql

I didn’t think much more of it until I came into the office on Monday only to be greeted by many more errors from SQL Azure Backup. It seems the program simply wouldn’t work but bizarrely only in Western Europe. After some investigation it seems our SQL Server identification routine was failing to recognise SQL Azure anymore. This was due to Microsoft having quietly updated the Western Europe data centre to use a new version of SQL Azure based on the Denali codebase. This can be seeing by comparing the result of..

select SERVERPROPERTY(‘EngineEdition’)

Northern Europe = Microsoft SQL Azure (RTM) – 10.25.9644.0   Jun 16 2011 16:24:06   Copyright (c) Microsoft Corporation

Western Europe = Microsoft SQL Azure (RTM) – 11.0.1440.26   Jul 11 2011 17:50:21   Copyright (c) Microsoft Corporation

Thanks to Microsoft for the huge amount of notice given for this major (and breaking) change. As changing the Major.Minor version of a product is to my mind no doubt a breaking change. The only mention of this that I had come across was posted just a couple of weeks ago.

However almost no details were given about the speed of rollout. How are tools vendors meant to test products against a platform with no notice? This is completely unacceptable to my mind. We need to be given far more explicit notice about breaking changes like this. I mean even Microsoft products such as DacImportExportCli.exe were unprepared and have been broken.

We need a much better notification system and ideally some datacentre that is designated as the first roll-out location so that third party tools can be tested before breaking changes are rolled out to customers live systems.

In case you’re wondering how to tell if the SQL Server you are connected to is SQL Azure or not you can use the following property which returns 5 if the server is SQL Azure.

select SERVERPROPERTY(‘EngineEdition’)

I am so not impressed by Microsoft right now I can barely contain my fury.