Pour utiliser une syntaxe SQL plus récente dans Azure SQL, ce n'est pas la version du serveur qui compte — c'est le niveau de compatibilité.
Ce matin, un développeur de mon équipe m'a demandé quelle était la version SQL d'une de nos bases de données de production pour savoir s'il pouvait utiliser une syntaxe SQL plus récente dans une requête. La réponse n'était pas aussi simple qu'il l'espérait — et c'est un piège que beaucoup de développeurs rencontrent en passant de SQL Server on-premise à Azure SQL.
En bref
- La version affichée dans SQL Management Studio peut différer de
SELECT @@VERSION - Les numéros de version du serveur physique et d'Azure SQL ne sont pas les mêmes
- Le niveau de compatibilité détermine quelle syntaxe SQL vous pouvez utiliser
- Vérifiez toujours le niveau de compatibilité avant d'adopter des fonctionnalités récentes
Comment obtenir la version du serveur
Si vous utilisez SQL Management Studio, vous pouvez obtenir la version du serveur SQL dans l'Explorateur d'objets.

Dans cet exemple, la version du serveur est 12.0.2000.8, ce qui pourrait être interprété comme SQL Server 2014.
Référence : Comment déterminer la version, l'édition et le niveau de mise à jour de SQL Server
Pourquoi SELECT @@VERSION donne un résultat différent
En utilisant SELECT @@VERSION, vous pouvez obtenir une version différente.

Dans cet exemple, il semble s'agir de SQL Server 2016. Les numéros de version du serveur SQL physique et du serveur SQL Azure ne sont donc pas les mêmes.
Ce qui compte vraiment : le niveau de compatibilité
Le niveau de compatibilité est ce que vous recherchez lorsque vous voulez utiliser une syntaxe SQL plus récente. L'alignement des versions SQL avec les niveaux de compatibilité par défaut est le suivant :
| Niveau | Version SQL Server | Azure SQL Database |
|---|---|---|
| 100 | SQL Server 2008 | Oui |
| 110 | SQL Server 2012 | Oui |
| 120 | SQL Server 2014 | Oui |
| 130 | SQL Server 2016 | Oui |
| 140 | SQL Server 2017 | Oui |
Référence : Default compatibility level 140 for Azure SQL databases
Vérifier le niveau de compatibilité actuel
SELECT compatibility_level
FROM sys.databases
WHERE name = 'VotreBaseDeDonnees';
Avant d'adopter une syntaxe ou une fonctionnalité introduite dans une version récente, vérifiez que le niveau de compatibilité de votre base le supporte — ou planifiez une mise à niveau en conséquence.
Pour aller plus loin
Vous travaillez sur une migration de plateforme ou une modernisation de requêtes? Échangeons.
