Un Blog su SQL Server e dintorni organizzato In Pillole

Come trovo la versione di SQL Server?

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
Compatibility level del database

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *