Che versione di SQL Server stai utilizzando? Come risponderesti a questa domanda?
@@VERSION
Facile, la prima cosa che ti viene in mente è l’engine.
Ok, allora possiamo fare una bella print di questo tipo:
PRINT @@VERSION;
Per ottenere la nostra classica stringa:
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)
Aug 22 2017 17:04:49
Copyright (C) 2017 Microsoft Corporation
Express Edition (64-bit) on Windows 10 Home 10.0 <X64> (Build 19044: )
Completion time: 2022-06-22T17:10:12.2758009+02:00
Vediamo che l’engine al momento in cui scrivo, per poter fare le varie prove di questo blog è il 2017, Express Edition ed il relativo sistema operativo.
Compatibility Level
Ma se invece stessi parlando del compatibility level o livello di compatibilità? Mi dirai: “Si ma cosa ha a che fare con la versione dell’engine?”
Effettivamente c’è una stretta correlazione. Questa informazione viene definita su ogni database e permette all’engine di rimanere retrocompatibile trattando quello specifico DB come se fosse ospitato dalla versione specificata.
Ad esempio, poniamo il caso di dover aggiornare tutti i miei SQL Server al 2019; purtroppo potrei non essere del tutto certo che il mio database (strutture dati, stored procedures, costrutti utilizzati nelle queries, ecc…) siano pienamente compatibili con il mio nuovo engine,
In questo caso, posso specificare un livello di compatibilità specifico per rimanere magari sul 2017.
Per impostare il compatibility level utilizzerò una ALTER sul database:
ALTER DATABASE MyDatabase
SET COMPATIBILITY_LEVEL = 140;
GO
Specificherò quindi:
- 150 per il 2019
- 140 per il 2017
- oppure qui trovate sulla documentazione ufficiale una tabella completa di tutte le configurazioni esistenti
Per conoscere la versione del database corrente possiamo eseguire questa select:
SELECT name, compatibility_level
FROM sys.databases
WHERE name = db_name();
GO
Se ci pensate questa possibilità lascia un grado infinitamente alto di flessibilità nella gestione del proprio sistema.
Permette di avanzare di versione con più serenità, degli sviluppatori in primis, ma anche dei DBA 🙂
Spero che anche questo piccolo articolo vi sia tornato utile. Fatemi sapere nei commenti cavilli o esperienze riguardo quest’argomento.