SQL Anywhere 17 marque une rupture nette avec les versions 16 et antérieures : bascule vers une administration 100 % web (Cockpit), moteur davantage parallélisé (recovery, index, plan-cache), sécurisation modernisée (TLS 1.2 +, CommonCryptoLib, SNI) et outillage refondu (Profiler, dbisql, nouvelles API). Les patch levels jusqu'au PL 67 / SP01 poursuivent cet élan : adoption de CommonCryptoLib, TLS sur TDS, pilotes Node.js 8 et PHP 7, retrait du Flash Monitor, etc. Ces changements impliquent souvent une mise à jour des scripts de démarrage, des rôles, voire un rebuild de base pour profiter d'objets catalogues étendus.
Lancement serveur : option -cdb pour démarrer le Cockpit, ou procédure sa_server_option('CockpitDB', '...') à chaud ; contrôlable en lecture seule via -sf.
Rôles et privilèges : seul l'exercice du rôle COCKPIT_ROLE (créé par défaut) permet l'accès ; ce rôle inclut désormais ACCESS DISK INFORMATION pour surveiller l'espace disque sans droits DBA.
Fonctions clés : exclusion automatique des connexions du Cockpit du compteur global, vue de l'URL d'accès (CockpitURL), alerte disques / cache‐miss, notifications mail paramétrables et migration d'une base temporaire vers permanente sans perte d'historique.
Modes « Complet » vs « Ciblé » : le ciblage limite la collecte aux requêtes correspondant à vos filtres, ce qui autorise des campagnes prolongées en production sans surcharge.
Analyse automatique de workload : rapport guidé (blocage, CPU, workers, checkpoints) et export prêt à envoyer au Support SAP.
Démarrage simplifié : menu Démarrer Windows ou commande dbprof; prise de snapshot diagnostic en un clic.
Le moteur applique désormais les opérations de journal en parallèle ; le gain dépend du nombre de cœurs, du ratio DML/DDL et de la présence de PK — essentiel en mirroring ou après un dbsrv17 -a.
Toutes les requêtes peuvent être mises en cache ; celles envoyées depuis le client sont auto-paramétrées selon l'option parameterization_level ou le hint homonyme.
Nouvelle proc sp_plancache_contents, privilège MANAGE CACHED PLANS et compteur ParameterizationPrepareCount pour auditer les bénéfices.
Instruction BEGIN PARALLEL WORK pour créer index et charger des tables en parallèle ; associée à des optimisations d'index-scan et un scheduler topologie-aware.
Réglage max_query_tasks : mettre 0 pour laisser le serveur décider par requête.
Taille minimale des paquets portée à 1000 octets ; les vieux clients s'adaptent mais un serveur 17 SP1 ne dialoguera pas avec un serveur plus ancien resté à 500 octets.
Autocommit côté serveur : paramètre ClientAutocommit=no|yes pour basculer, intéressant quand des frameworks (Hibernate …) bricolent setAutoCommit dans des boucles serrées.
min_tls_version par défaut = 1.2 pour le serveur, MobiLink et UltraLite.
Support SNI via paramètre sni_hostname côté client/serveur.
Nouvelle option skip_certificate_name_check=ON pour ignorer la validation du nom d'hôte dans les certificats en TLS/HTTPS, utile en dev ou pour certains proxy reverse.
À partir du PL 41, le chiffrement utilise SAP CommonCryptoLib ; les fichiers OpenSSL ou Certicom historiques sont retirés, et l'option allow_expired_certs devient inopérante puisqu'un certificat expiré est désormais bloqué par défaut.
Les déploiements FIPS exigent les bibliothèques sapcryptofips / slcryptokernel (Windows) ou équivalents Unix, plus la ré-génération des clés privées en AES (plus de 3DES).
allow_expired_certs persiste côté MobiLink pour accepter un certificat serveur expiré, mais uniquement en réseau de synchro ; déconseillé en prod.
SSL 3.0 définitivement supprimé ; passer impérativement en TLS.
Onglets multiples, indicateur de verrous, comparaison de plans graphique, nouvelle option -we pour transformer les warnings en erreurs et combo -f + -c autorisée.
Boutons Connect/Disconnect ajoutés à la barre d'outils pour gagner en ergonomie.
dbunload / dbxtract : options -ru (SQL non traitées), -dt, -kdi pour le nombre d'itérations de dérivation de clé, etc.
Utilitaire dblog et fonctions DBTools durcissent la vérification de versions pour éviter d'écrire sur un format plus récent que l'outil.
Introduction des variables de base (scope = DATABASE) avec privilèges dédiés (CREATE DATABASE VARIABLE, etc.) et vue SYSDATABASEVARIABLE.
Support des expressions PIVOT / UNPIVOT dans le moteur (voir section Miscellaneous).
Node.js : pilotes fournis jusqu'à la v 8 ; les anciennes 0.10/0.12/4.x disparaissent.
PHP 7 et .NET Core provider désormais supportés, tandis que .NET 4.0 est abandonné.
Adapters JPA : contributions officielles pour DataNucleus et OpenJPA simplifient l'usage ORM.
Attributs %TYPE / %ROWTYPE à la façon PL/SQL pour typer colonnes, variables et curseurs par référence.
Nouveaux constructeurs JSON ; ROW() accepte désormais zéro argument pour renvoyer une valeur composite vide.
allow_expired_certs (client) et cookies session_id_cookie / client_id_cookie pour conserver l'ID de session entre appels HTTP.
Ajout d'Oracle 18c et SQL Server 2017 comme bases consolidées, retrait du serveur MobiLink 32-bit, support AIX déprécié.
Nouvel utilitaire mltemplate pour générer scripts et objets sur des déploiements de masse.
Checksum page activé par défaut, concurrence multi-bases et API C++ GetBytes/SetBytes pour manipuler des blobs via byte array.
Support Android x86 et Universal Windows Platform (remplace Windows Phone 8.1).
MiniDumpType (-md NORMAL|FULL) pour contrôler la taille des dumps crash ; utile en prod à haute fréquence d'IO.
ST_IsIndexable pour valider qu'une géométrie est indexable avant insertion dans un index spatial.
Backup/Recovery docs réorganisés : nouveaux parcours par outil et types de sauvegarde, plus terminologie homogénéisée.
Vous pouvez consulter les documentations officielles sur les nouveautés de SQL Anywhere 17: