More on GDRs, QFEs, and the aftermath of SP2.

James Howey of Microsoft gave us a very thorough explanation on the differences between a GDR and a QFE, what happened in SP2, and how to decide which build you should be aiming for.  I'm going to post it here, unedited.


We recently posted updates to address an issue in two SP2 Maintenance Plan tasks. The KB article describes the symptoms as follows:

FIX: The Check Database Integrity task and the Execute T-SQL Statement task in a maintenance plan may lose database context in certain circumstances in SQL Server 2005

In Microsoft SQL Server 2005 Service Pack 2 (SP2), the following tasks in a maintenance plan may lose database context in certain circumstances:
. Check Database Integrity
. Execute T-SQL Statement
For example, if a Check Database Integrity task is configured to check integrity on multiple databases, the task repeatedly checks the default database.

For the Execute T-SQL Statement task, this problem occurs if the following conditions are true:
. The Execute T-SQL Statement task contains multiple batches.
. The batches are separated by the GO statement.
. No batches use the USE statement to specify the database.
. The statements in each batch do not contain the database name.
In this scenario, those statements in the second batch and in succeeding batches will be executed against the default database.

This fix is shipped in two different packages:
. The GDR release is available via
. The QFE release is available via

What is the difference between a GDR and QFE release? GDRs are a new means of providing support. GDR fixes are reserved for those issues identified by SQL Server support as important enough to install on every instance of SQL Server. QFEs are used for the majority of fixes where the effects of the problem are not widespread or severe enough to warrant a GDR.

GDRs and QFEs are associated with certain build numbers. Build numbers 3043 through 3149 are reserved for GDR releases. Build numbers 3150 and up are reserved for QFEs. By reserving lower build numbers for GDR releases, users can continue to take advantage of GDR fixes, without having to install QFEs, which aggregate all the fixes shipped since the most recent service pack. Once a QFE is installed, GDRs will no longer update your system, because the build number is too low, and you have to install QFEs to pick up new fixes.

Why is this fix a GDR? This fix was promoted to GDR because users that relied on the Check Database Integrity task to validate their databases were not informed of database integrity issues that they expected to be detected.

The fix also addresses issues in the Execute T-SQL task, but, since these issues typically lead to script failure, duly noted by SQL Server, the T-SQL issues alone were not enough to justify the GDR.

Those users who now, or in the future, rely on the Check Database Integrity Task or the Execute T-SQL task in a maintenance plan should install the GDR.  Others may skip the GDR.


Aaron Bertrand

I am a passionate technologist with industry experience dating back to Classic ASP and SQL Server 6.5. I am a long-time Microsoft MVP, write at Simple Talk, SQLPerformance, and MSSQLTips, and have had the honor of speaking at more conferences than I can remember. In non-tech life, I am a father of two, a huge hockey and football fan, and my pronouns are he/him. If I've helped you out, consider thanking me with a coffee. :-)

11 Responses

  1. A DBA says:

    Here's an idea… how about an SP3 that encompasses all of the fixes, and maybe MS can actually test it this time before releasing it?

  2. Chris Wood says:

    Here is what I meant in comment 5

  3. AaronBertrand says:

    Um, is that URL totally backwards for you too?
    For me the scrollbar is on the left, and everything is right aligned.  Last I checked, my regional settings were not arabic.

  4. Chris Wood says:

    Now I have seen this one: – build 3161

  5. Chris Wood says:

    Do you know about this?
    Hotfixes vs. Service Packs: Blurring the Lines
      by Brian Moran, [email protected]
    Last week, my press contacts at Microsoft told me about the company's new Incremental Servicing Model for SQL Server, a new process for customers to receive scheduled SQL Server hotfix updates that is scheduled to launch April 16. The name and the brief description sure sounded intriguing. But, try as I might, I haven't been able to get much in the way of real information about what this new initiative really means to customers.
    I got this from the SQL Mag weekly update

  6. AaronBertrand says:

    Bob Ward does a deep dive on this here:
    Personally, I think that a couple of weeks (or months, or whatever it takes) before a service pack goes out, that GDR / QFE development should freeze, and they get the SP out with all of the work done to date.  I know that's a tall order and is not always practical, but it would certainly help in times like these.  We're still getting hotfixes in the .22xx range, and we have the ability to instead be at .305x or .315x, and all of these branches appear to be "current"… at some point they just have to get things back into the mainline and have a common base.

  7. Chris Wood says:

    Reading this implies that a GDR is a base level with a new fix added and a GFE is an accumulated set of fixes. I just need to know that if I install a service pack build that it has all the fixes that came before in it.

  8. Jerry Jung says:

    Can there just be a SP2.1 release that includes all the fixes?
    I am losing count 🙁
    also means no SP2 on production servers YET

  9. Denis the SQL Menace says:

    Thanks for the info Aaron
    I assume GDR means General SomethingHere Release and QFE means Quick Fix Expedited 😉