I have received a ton of private mail on this, hence rather than just pasting the same answer in I’m going to take it on here.
Interestingly enough I explained this problem, with a slightly different context, back when 2005 SP1 came out here, but lets go through it again with 2008 context. Bob Ward has an excellent post on this here, so if you don’t want to read the waffle below follow that link.
Releasing something as large and broadly used as a SQL Server Service Pack is a mind boggling undertaking, there are literally millions of tests to run, the closer you get to release the more expensive every change in the code is as tests may need re-run (stress and perf tests are particularly expensive to run). Hence the team tries to raise the bar on fixes during the SP cycle so that by the end the fix must be high priority and present low risk of regression.
The SP takes many months to gestate and during that time the team will release hotfixes/QFEs and these days cumulative updates (CU’s). to begin with these changes are automatically ported into the SP source tree but at some point close to the end this has to stop. After this point the trees diverge, hotfixes continue to be released to the wild but not added to the SP tree.
Hence there is a problem, when the SP releases it has a bunch of fixes that were never released as hotfixes, plus it has gone through lots of testing that is not applied to hotfix/CU engineering, hence orgs want to deploy quickly. HOWEVER there have also been hotfixes released that are not included, if you have the latest hotfix/CU and then apply the SP, you are going to lose some of these hot fixes.
The solution is that there is a post SP hotfix rollup or CU that is generated soon after the SP comes out to resync.
All right now onto the 2008 SP1 specifics;
CU4 was released on March 19 as defined by this KB. However the SP1 KB says that SP1 includes everything up to and including CU3, however that’s not strictly correct, it appears as if 6 fixes made it into SP1 according to Bob.
Applying SP1 over CU4 WILL wipeout the remaining fixes in CU4 with the exception of those 6, so if you have CU4 installed you should probably wait for SP1-CU1 to come out as that will have all of the missing fixes. You are then going to have to install SP1 and then CU1 to get to the best known state.
On the upside I think its AWESOME that this SP can be uninstalled AND slipstreamed, these feature requests have been outstanding for a very long time, great work SQL Team.
Now there are some things I think that could be done to make things easier;
1/ When the SP1 installer runs it could detect that CU4 is installed and point out that some fixes are going to be rolled back, it would be awesome if it could list those fixes but I’d take the warning for now.
2/ The KB needs to be crystal clear so that we don’t need blog entries like this, and Bob’s one and no doubt several from the MVPs that will be needed over time.
3/ The team might need to think about clearer separation, I think part of the confusion comes from the fact that SOME of the CU4 fixes are included but not the majority, it may have been better to not include any of the CU4 fixes given the dates, but then of course hindsight is always 20/20…
UPDATE: SP1 CU1 is now out so the fixes are aligned.