Comme Microsoft effectue des mises à niveau de version de SQL Server plus fréquemment depuis les jours SQL Server 2005 ou 2008, de nombreuses entreprises ont du mal à déterminer quand une mise à niveau est un "must have"! et quand une mise à niveau est un "Agréable à avoir"
Dans l'esprit de quelques questions précédentes sur les raisons de préférer diverses versions plus récentes de SQL Server aux précédentes, quelles sont les raisons techniques ou commerciales objectives qu'une entreprise pourrait envisager pour une mise à niveau vers SQL Server 2016 par rapport à une version antérieure, voire plus tard version telle que SQL Server 2014?
(Cette question à propos de SQL Server 2012 par rapport à SQL Server 2008, Ou celle-ci à propos de SQL Server 2012 par rapport à SQL Server 2005 viennent à l'esprit comme des exemples de l'esprit de cette question Les réponses à ces questions développent également certaines des raisons pour lesquelles les entreprises démarrent sur SQL Server 2008 ou SQL Server 2005)
Il existe de nombreuses raisons d'envisager une mise à niveau vers SQL Server 2016. La plupart du temps, ces raisons varient en fonction de la version de SQL Server dont vous venez. Ce ne sera pas une liste exhaustive, mais je donnerai quelques raisons qui me viennent à l'esprit. Y compris une très grande raison que nous venons d'apprendre avec la sortie de SQL Server 2016 SP1 en novembre 2016. Dans l'attente de voir d'autres réponses pour l'expansion ou les fonctionnalités que j'ai manquées.
Le 16 novembre 2016, Microsoft a annoncé la sortie du Service Pack 1 pour SQL Server 2016. Parallèlement à cette annonce, ils ont également annoncé que de nombreuses fonctionnalités précédemment réservées aux clients Enterprise Edition seraient disponibles dans tous éditions de SQL Server - Standard, Express (à quelques exceptions près), Web en plus d'Enterprise Edition.
Cela devrait être une raison très convaincante pour la mise à niveau pour les éditeurs de logiciels qui développent et vendent des logiciels dotés d'un serveur SQL Server - de nombreuses fonctionnalités peuvent désormais être disponibles pour leurs clients quelle que soit leur édition sous licence de SQL Server. Cela est également convaincant pour les entreprises des secteurs qui doivent maintenir l'audit ou d'autres améliorations de sécurité qui ont été ajoutées au produit au fil du temps.
À mon humble avis, en plus de 17 ans de travail avec SQL Server, SQL Server 2016 SP1 est probablement la mise à niveau la plus convaincante à ce jour depuis que j'ai commencé à travailler avec SQL Server dans la version 6.5. (Ne vous méprenez pas, les 2000, 2005 et 2012 avaient aussi leurs avantages pour leur temps!)
Regardez la liste ci-dessous, mais comme exemple rapide de certaines des fonctionnalités que vous pouvez désormais utiliser dans Standard Edition, vous disposez des éléments suivants: compression, capture de données modifiées, audit fin, sécurité au niveau des lignes, toujours crypté, partitionnement, base de données Instantanés, OLTP en mémoire, Columnstore.
J'essaie de garder les raisons ici dans cette section pour les fonctionnalités introduites dans SQL Server 2016 uniquement. Je ne décris également que les principales améliorations du moteur dans cette réponse, pas les rapports, les analyses, l'intégration des données, etc.
Sécurité au niveau des lignes - De nombreux clients cherchent à pouvoir implémenter la sécurité ligne par ligne. "L'utilisateur x peut afficher les données sur cette ligne, mais pas sur cette ligne". Beaucoup de ces clients ont créé des fonctions et/ou des structures basées sur des vues compliquées pour y parvenir. Dans SQL Server 2016, des prédicats et des politiques de sécurité intégrés sont disponibles pour vous aider ici. Vous pouvez en savoir plus sur RLS ici .
Masquage dynamique des données - Celui-ci sonne bien sur le papier, mais je me demande s'il s'avérera moins utile que les deux autres changements dans le domaine de la sécurité. Fondamentalement, vous pouvez masquer dynamiquement ou masquer des données au moment de la requête en fonction des autorisations de l'appelant. La quantité de données à masquer est quelque chose de programmable. Par exemple, dans l'exemple utilisé par Microsoft, vous pouvez masquer tout sauf les quatre derniers chiffres d'un numéro de carte de crédit afin qu'un preneur d'appel dans un centre d'appels puisse vérifier ces quatre derniers chiffres. Vous pouvez en savoir plus à ce sujet ici .
Toujours crypté - Peut-être avez-vous entendu parler de certains défauts ou préoccupations concernant le cryptage transparent des données. Peut-être que vous ne voulez pas utiliser TDE de peur qu'une personne avec un accès SA puisse certainement décrypter si elle le souhaite. Always Encrypted a été publié comme une fonctionnalité qui met la capacité de décryptage/cryptage entre les mains de l'application appelant SQL Server. Les données au repos dans SQL Server sont cryptées. Les données en vol vers SQL Server sont également cryptées à la suite de cette approche. Vous pouvez en savoir plus sur Always Encrypted ici .
Quelques fonctionnalités sont sorties ici. L'une est la possibilité d'utiliser les groupes de disponibilité Always On dans SQL Server Standard - le groupe de disponibilité de base. Cela était nécessaire car la mise en miroir est obsolète et n'avait pas de remplacement. La fonctionnalité est limitée au nombre de répliques et à l'approche de synchronisation. Vous pouvez lire plus ici .
Ce n'est pas la seule modification apportée aux groupes de disponibilité (qui, soit dit en passant, ont été introduits dans SQL Server 2012). Il y a aussi quelques autres changements (vous pouvez voir la liste exhaustive avec des liens vers d'autres changements ici ):
Le programme d'installation de SQL Server à partir de SQL Server 2016 corrige certaines erreurs courantes commises lors de la configuration de TempDB. L'interface graphique d'installation vous guide maintenant à travers la configuration des meilleures pratiques.
Un favori parmi les MVP et tuners SQL Server. Cette fonctionnalité est un outil pour vous donner un aperçu de la façon dont les requêtes sont exécutées par le moteur. Particulièrement utile pour suivre les problèmes de performances causés par les modifications des plans de requête au fil du temps. Cela peut être un outil à visualiser, mais aussi un outil à corriger. Aide à simplifier quelques concepts d'optimisation des performances. Vous pouvez en savoir plus à ce sujet ici .
Je vois souvent le besoin de poser une question comme "A quoi ressemblaient ces données à telle ou telle date". Les tables temporelles sont une méthode pour ce faire. Certainement avoir des cas d'utilisation d'entreposage. Voir plus ici .
Trois grandes améliorations pour moi ici parmi quelques autres. L'un est les index de colonnesstore non clusterisables pouvant être mis à jour. SQL Server 2014 nous a donné une mise à jour en cluster, mais nous avons maintenant une mise à jour non approuvée. SQL Server 2016 autorise également les index columnstore sur les tables en mémoire OLTP. Et la possibilité de placer un index B-tree non cluster traditionnel sur un index columnstore en cluster existe désormais dans SQL Server 2016.
Plusieurs des fonctionnalités qui n'étaient pas prises en charge à l'intérieur des tables en mémoire ou dans les procédures compilées en mode natif sont désormais disponibles. Quelques ajouts (mais voir cet article pour en savoir plus): Contraintes UNIQUES, Vérifier les contraintes, clause OUTPUT en DML, Jointure externe, Sous-requêtes dans la liste de sélection, SELECT DISTINCT, UNION/UNION ALL, et plus encore.
SQL Server 2014 a apporté des améliorations aux performances dans plusieurs domaines clés comme le fait chaque version. SQL Server 2016 a apporté des améliorations clés supplémentaires à l'ensemble du produit. Cela inclut l'élimination pour de nombreux clients de certaines des difficultés parfois rencontrées lors de la mise à niveau vers SQL Server 2014 en raison des modifications de l'estimateur de cardinalité. Plusieurs changements de haut en bas du moteur ont été effectués pour améliorer les performances quotidiennes. L'équipe CSS de Microsoft a blogué à ce sujet sur son blog. Vous pouvez simplement rechercher "SQL Server 2016, il s'exécute plus rapidement". Un exemple de billet de blog pour cette série est ici .
J'ai vu cela se produire chez les clients qui ont mis à niveau et je m'attends à le voir de plus en plus.
Il y a évidemment des inconvénients à toute mise à niveau. C'est peut-être parce que je fais cela pour gagner ma vie en tant que consultant, mais je pense que les inconvénients sont tous incroyablement gérables et vraiment les considérer comme "compter d'abord les articles" à connaître et à gérer.
Mises à niveau en général - En général, les mises à niveau signifient que vous introduisez de nouvelles fonctionnalités. Vous devez pouvoir les tester. Entre les versions de SQL Server, diverses fonctionnalités sont obsolètes. Cela ne signifie pas qu'ils disparaissent immédiatement, mais cela signifie qu'ils le pourront dans les versions futures, souvent trois versions plus tard. Par exemple, le type de données TEXT ou les jointures externes dans la clause where avec la syntaxe *=
Ou =*
Ne sont pas pris en charge si vous venez d'une base de données exécutée en mode de compatibilité SQL Server 2000. En parlant de modes de compatibilité, ils ne remontent que trois versions. Donc, si vous avez une base de données exécutée en 80 (SQL Server 2000) ou 90 (SQL Server 2005) modes de compatibilité, ils ne peuvent pas passer dans SQL Server 2016 comme ça. Donc, si vous avez évité de faire ce test et de vous faufiler des niveaux de compatibilité, il est temps de compter.
Encore. C'est facile. Il existe des outils pour aider à capturer et à tester les données pour voir ce qui se casse. Il existe des compteurs perfmon qui peuvent aider à rechercher des fonctionnalités obsolètes.
Licence - Deux choses ici:
Il existe de nombreuses autres raisons, telles que le support JSON, l'introduction de R, etc. Mais ce ne sont que quelques-unes des raisons pour lesquelles j'envisagerais une mise à niveau. L'élément le plus important, encore une fois, est la possibilité d'utiliser de nombreuses fonctionnalités auparavant réservées à l'édition Entreprise dans Standard, ou même Express. J'ai vu de grandes histoires de réussite parmi mes clients et je m'attends à en voir plus.
Et si vous utilisez SQL Server 2005 ou 2008, la liste est encore plus longue. Les groupes de disponibilité AlwaysOn sont sortis en 2012, les index Columnstore dans SQL Server 2012, In-Memory OLTP dans SQL Server 2014, etc.
Sans oublier que si vous utilisez toujours SQL Server 2005 ou 2008, vous n'avez plus de support standard.