SQL Server SP kontra CU

Nemrég jött ki az SQL 2005 SP3, és múlt héten a SQL 2008 SP1. Mindenki patchelheti az SQL-jeit – és természetesen a klienseket, a Management Studiokat is. Eddig ez egy teljesen átlagos történet, az érintett emberek általában már tudják is.

Azt viszont nem mindenki tudja, hogy az SQL patch stratégiájának vannak érdekes mellékhatásai. Ezek megismeréséhez először nézzük meg a stratégiát magát: jönnek ki a hotfixek szépen sorban, de mivel sok van belőlük, időről időre összerakják őket egy nagyobb csomagba, melyet cumulative update néven árulnak. Ezek a megelőző service pack (itt most ő lesz az SP, nem a stored procedure) óta kiadott fixeket tartalmazzák, például az SQL 2005 SP2 CU10 az SP2 utáni tizedik csomag, aminek előfeltétele az SP2 telepítése, de a többi CU telepítése nem. Tehát a CU-k egyfajta “SP-n belüli SP-k”. Ez tiszta sor, nézzük a csavart.

Amikor egy SP-t készítenek, akkor először is meghatározzák a tartalmát. A service pack nemcsak a hotfixeket tartalmazza, hanem ebbe kerülnek bizonyos alkalmazásbeli módosítások is (az SQL 2000 SP4 az “önblokkoló” processzeket is blokkoltnak tünteti fel – jelezve, hogy saját magukat blokkolják; SQL 2005 SP1-be került a mirroring támogatása; az SQL 2008 SP1-be a oneclick installálható ReportBuilder). Így ennek a tesztelése egy kicsit nagyobb falat. Ezt kiválóan mutatja az SQL 2000 SP4 esete, ami végül nem lett tökéletes, elrontotta az AWE támogatást, így gyakorlatilag senki nem használ(t) “csak” SP4-es SQL Server 2000-t, hanem a 8.00.2039-es verziójú SP4-re már tolta is rá a 8.00.2040 verziójú hotfixet, ami az AWE támogatást visszaadta.

Ennek a “scope freeze“-nek a hozadéka a fent említett mellékhatás, ami tulajdonképpen annyi, hogy amikor kijön az új service pack, az nem tartalmaz minden addig kiadott hibajavítást, azokat sem, amiket már kiadtak cumlative update-ben is. Például az SQL 2005-nél az SP2 utolsó két halmozott firssítése (avagy cumulative update-je), a CU11 és CU12 már akkor készült el, amikor az SP3 scope freeze megtörtént. Hasonlóan a SQL 2008 SP1 a CU1-3 hotfixeket tartalmazza, a CU4-et már nem. A CU4-ből majd egy SP1 CU1 lesz hamarosan. Ha valakinek tehát tényleg kellett egy olyan hotfix, ami a CU4-ben volt benne, az ne rakja fel az SP1-et még, hanem várjon a CU4 SP1-es “újrakiadásáig”. Ha esetleg valaki felteszi a CU4-et, majd rá az SP1-et, azt veszi észre, hogy eltűntek a CU4-es hotfixek. Ez ugyanígy áll az SQL 2005-re is.

Tehát a CU-k az SP-k előtt bonyodalmat okozhatnak. A modell jóságáról lehet vitatkozni (épp nemrégiben olvastam egyet, az ihletett erre a postra, szerencsére én kellemetlenségek nélkül ismertem meg ezt még a 2005 SP3 kapcsán), mindenesetre tény, hogy így működik. Egy számomra szimpatikus javaslat volt ennek feloldására, hogy service pack scope freeze után ne adjanak ki cumulative update-eket, csak egyedi hotfixeket, így elkerülhetővé válik az akaratlan folteltávolítás (vagy patch uninstall angolul). Remélem a Microsoft megfogadja ezt a tanácsot, nekem is jobban tetszene.

Leave a comment