Gammel vin på nye flasker…

…eller gammel C5 på ny SQL-server.

Ønsker man det, så kan det være nødvendigt at sætte databasekompatibilitetslevel på SQL-serveren så man slår noget af den nye funktionalitet, som den gamle C5 ikke kan lide, helt fra.

Du kan justere databasekompatibilitetslevel på hver enkelt database på SQL-serveren v.hj.a. SQL manageren.

DB Komp.level *1) Svarer til C5 kerne version (og nyere)
60 SQL Server 6.0
65 SQL Server 6.5
70 SQL Server 7.0
80 SQL Server 2000 3.0 servicepack 3: 3.0 build 61 *2)
90 SQL Server 2005 4.0 servicepack 1: 4.0 build 40 *2) *4)
100 SQL Server 2008
SQL Server 2008 R2
C5 2008: 4.2.1.349
110 SQL Server 2012 Se note *7) for ældre C5’ere
C5 2010: 4.3.1.282
C5 2012: 4.4.0.191
120 SQL Server 2014 Se note *7) for ældre C5’ere
2010: 4.3.1.282 *3)
C5 2012: 4.4.0.191 *3)
130 SQL Server 2016 Se note *7) for ældre C5’ere
C5 2012: 4.4.2.479 *6)
n/a Azure SQL Supporteres IKKE af C5 *5)

*1) Bemærk at ikke alle databasekompatibilitetslevels supporteres på alle SQL-servere. Generelt supporteres kun to kompatibilitetslevels bagud ift. SQL-serverens version
*2) Bemærk at kun 32 bits SQL Server er testet og dermed supporteres af Microsoft for disse C5 versioner. Vi er ikke bekendt med problemer ved 64 bits SQL og disse C5 versioner, men kan naturligvis ikke anbefale det når Microsoft ikke gør
*3) Bemærk at disse kerneversioner ikke officielt supporterer SQL Server 2014, men at det så vidt vides fungerer. Microsoft strækker sig så langt som til at sige at de ikke er vidende om problemer med kernerne C5 2010: 4.3.2.327 og C5 2012: 4.4.1.371. Men officielt testet og certificeret bliver det først senere – for C5 2012 vedkommende nok med C5 2012 SP2 kernen
*4) Bemærk at C5 2012 fra version 4.4.2.470 ikke længere supporteres på SQL Server 2005 og ældre. Kernen kan i øvrigt heller ikke længere afvikles på Windows XP og Windows Server 2003
*5) Du kan læse mere om hvorfor Azure SQL ikke supporteres ved at klikke her!
*6) C5 2012 kerner er fra version 4.4.2.479 testet på SQL Server 2016 CTP (Consumer Technology Preview) 2.4, mens kernerne fra version 4.4.2.509 er testet på SQL Server 2016 RC3 (Release Candidate 3). Ældre versioner (inkl. C5 2010) er ikke testet af Microsoft, men vi er ikke vidende om at C5 2010 kerneversion 4.3.1.282 og C5 2012 kerneversion 4.4.0.191 og nyere ikke fungerer korrekt på SQL Server 2016
*7) Pga. forskellige spidsfindigheder er der undtagelser fra hele den beskrevne logik – og derfor kan følgende table måske alligevel hjælpe dig med at få din ældre C5 til at fungere på SQL-servere fra version 2012 og frem:

C5-version C5-kerneversion Bemærkning
4.0 SP1 4.1.0.180 OK fordi kernen pga. en bug reelt kører med -zzH142
2008 RTM 4.2.0.256 OK fordi kernen pga. en bug reelt kører med -zzH142
2008 SP1 4.2.1.249 Kan køre med -zzH142 eller -zzH138
2010 RTM 4.3.0.120 Kan køre med -zzH142 eller -zzH138
2010 SP1 4.3.1.234 Kan køre med -zzH142 eller -zzH138

Eksempel: Vil du køre din C5 på en SQL-server 2012, så SKAL du have en 2010 kerne nyere end 4.3.1.282, eller en 2012 kerne nyere end 4.4.0.191… Eller sætte kompatibilitetslevel så C5 tror at serveren er ældre (3.0 sp3 kan dog ikke køre på en 2012 server grundet note 1 ovenfor).

 

Kører du fx en C5 2010 med en for gammel kerne på SQL 2012, vil du typisk få fejlen “FASTFIRSTROW” is not a recognized table hints option:

a

“FASTFIRSTROW” is not a recognized table hints option

 

 

 

 

 

Løsningen på det KAN være at slå FASTFIRSTROW fra i C5 kernen v.hj.a. parameteren -zzH. Se evt. dette blogindlæg og note *7) om bl.a. den parameter.

Bemærk: Generelt kan alle C5-versioner som udgangspunkt altid køre på en ældre udgave af SQL-serveren (se dog note 4 ovenfor), om end den formentligt vil køre bedre på en nyere udgave da den nye teknologi anvendes. Bedste performance opnås derfor ved at bruge højest mulige kompatibilitetslevel og SQL-server version.

Fortvivl ikke hvis du gerne vil køre en ældre C5’er på en ny SQL-server – du behøver ikke nødvendigvis opgradere hele din C5 hvis du har mange tilpasninger, men kan muligvis nøjes med en kerneopgradering – læs mere her!


15.01.2015 Indlæg er opdateret omkring note 2: det præciseres at 64 bits SQL blot ikke er testet af Microsoft på de pågældende C5 versioner. Tak til Thomas Buhr for at stille uddybende spørgsmål så vi kunne præcisere det

03.07.2015 Note 4 tilføjet ifm. frigivelsen af kerne build 4.4.2.470

13.05.2016 SQL Azure samt note 5 tilføjet

11.07.2016 SQL 2016 samt note 6 tilføjet

27.01.2017 En løsning omkring FASTFIRSTROW fejlen tilføjet. Stor tak til Lars Simonsen fra PentaCon for at minde mig om den :-).

08.09.2017 Tilføjet en table med afvigelser fra FASTFIRSTROW fejlen, samt fjernet at C5 kan køre på Azure SQL fordi vi er blevet klogere – se note *7)