web-dev-qa-db-fra.com

Quelles sont les raisons professionnelles objectives de préférer SQL Server 2012 à 2008 R2?

Mon entreprise est confrontée à la décision d'acheter SQL Server 2012 Denali ou SQL Server 2008 R2 pour un nouveau serveur de base de données. Je cherche des raisons objectives de choisir l'une plutôt que l'autre.

Nos exigences:

  • Édition standard (pour des raisons financières et par manque de fonctionnalités d'entreprise)
  • Charge de travail OLTP (cela signifie que nous n'avons pas besoin des nouvelles fonctions de fenêtrage et des index de stockage de colonnes)
  • Taille de la base de données de 10 à 100 Go
  • Aucune fonctionnalité d'intelligence d'affaires requise. Seul le moteur relationnel est requis
  • Mise en miroir de bases de données synchrones

Actuellement, je connais les raisons suivantes:

SQL Server 2012 Denali

  • Nouvelle version disponible

SQL Server 2008 R2

  • Technologie éprouvée

Je n'arrive pas à trouver beaucoup de raisons techniques de préférer l'une à l'autre. Fondamentalement, cela revient à choisir une technologie éprouvée qui fonctionne avec succès par rapport à la plus récente et la plus grande version disponible.

Quelles sont les raisons objectives de prendre la décision?

50
usr

Tout le monde est enthousiasmé par AlwaysOn et ColumnStore, mais de nombreux avantages de SQL Server 2012 ne sont pas exclusifs aux éditions haut de gamme. Je ne veux pas ressembler à un porte-parole, mais j'ai donné de nombreuses présentations sur SQL Server 2012 et je pense qu'il a beaucoup à offrir quelle que soit l'édition qui vous convient.

  • Bases de données partiellement contenues qui vous permettent de déplacer des bases de données entre des serveurs ou des environnements avec quelques chaînes de moins (à savoir les connexions au niveau du serveur et dépendances de classement des serveurs - les futures versions géreront des éléments plus épineux comme les serveurs liés et les tâches d'agent).

  • Management Studio est désormais un bien meilleur outil, aligné sur Visual Studio. IntelliSense est meilleur et tout un tas d'autres fonctionnalités facilitent l'édition. Maintenant, bien sûr, vous pouvez avoir 2008 R2 sur votre serveur et utiliser la version 2012 de SSMS, mais je ne sais pas comment cela fonctionne en termes de licence, et certains magasins ne veulent pas de versions mixtes (je préfère avoir les outils les plus récents sur mon poste de travail même pour gérer les serveurs de niveau inférieur). J'ai blogué au sujet des changements dès le début, quand il y avait encore des bugs, alors veuillez ignorer les négatifs car la plupart ou tous sont corrigés à partir de RTM. Je frissonne maintenant quand je dois utiliser une version antérieure de SSMS.

  • Améliorations des métadonnées vous permet d'inspecter les jeux de résultats des objets et des requêtes ad hoc, et vous permet également de mieux façonner la sortie des requêtes .

  • Rôles de serveur personnalisés vous permettent de définir un ensemble d'autorisations beaucoup plus granulaire pour les utilisateurs au niveau du rôle au lieu d'accorder/de révoquer un par un, ou tout simplement céder à la complexité et leur donner sysadmin.

  • FileTable vous permet de gérer un dossier comme une table de documents, mais toujours d'avoir un contrôle externe sur le contenu (alors imaginez pouvoir le faire avec T-SQL , et imaginez à quel point ce serait difficile à faire dans cmd ou PowerShell: UPDATE C:\Docs\*.* SET ReadOnly = 1 WHERE Author = 'Bob' AND Created < '20100101';) ... pensez que FileStream rencontre WinFS et obtient une certaine convivialité pour démarrer.

  • Les améliorations T-SQL vous permettent de faire beaucoup de choses qui étaient pénibles dans les versions précédentes:

    • THROW (pensez-y comme une sur-relance)
    • OFFSET/FETCH (plus simple, pagination standard ANSI)
    • SEQUENCE (mécanisme IDENTITY centralisé, comme dans Oracle)
    • Améliorations du fenêtrage/du cadrage (diverses choses ici, telles que les performances impressionnantes des totaux)
    • IIF()/CHOOSE()/CONCAT()/ EOMONTH()
    • Constructeurs de date/heure (par exemple DATETIMEFROMPARTS) similaires à DateSerial dans VB
    • PARSE()/ FORMAT() - comme leurs homologues .NET
    • TRY_CONVERT()/TRY_PARSE() - retourne NULL si CONVERT/PARSE échoue
  • Les événements étendus ont une interface utilisateur améliorée pour la configuration/visualisation, et couvrent enfin complètement la fonctionnalité de trace/audit (y compris un bien meilleur suivi de la causalité).

  • Beaucoup de nouveaux DMV , procédures système et améliorations de ShowPlan pour les diagnostics et le dépannage des performances. Jetez également un œil à ce que CSS appelle " The Black Box Recorder ."

  • Server Core vous permet d'exécuter sur un serveur au minimum sans tous les composants de l'interface utilisateur (une surface plus petite signifie qu'il est plus sécurité et maintenance réduite, car moins de parties du système d'exploitation sont soumises à Windows Update).

  • La recherche en texte intégral obtient d'importantes améliorations de performances sous-jacentes, ainsi que la recherche sémantique (pensez aux mots-clés) et la proximité personnalisable/NEAR.

  • AWE n'est plus pris en charge , ce qui signifie que votre instance SQL Server sur x86 avec 32 Go de RAM ne pourra que d'utiliser 4 Go - vous aurez donc enfin la motivation de quitter votre ancien matériel 32 bits.

62
Aaron Bertrand

Ce qui suit n'est que quelques exemples concernant les "preuves réelles pour ou contre la fiabilité dans la première version de toute nouvelle version", comme demandé. Il ne s'agit pas d'une analyse complète, mais plutôt d'une suggestion sur ce que vous pourriez vouloir rechercher.

Vous pouvez rechercher "Liste des problèmes résolus par SQL Server 2008 Service Pack 1" et "Liste des problèmes résolus par SQL Server 2008 Service Pack 3" sur le site Web MSDN. Comparez le nombre et la gravité des problèmes dans les deux listes. OMI, la première liste est plus longue, et elle contient plus d'articles qui pourraient gâcher ma journée, tels que:

  • Message d'erreur lorsque vous vous connectez à une instance nommée de SQL Server sur un ordinateur client qui exécute Windows Vista ou Windows Server 2008
  • L'agent Log Reader ignore certaines transactions lorsque l'agent Log Reader s'exécute pour répliquer les transactions
  • Message d'erreur lorsque vous exécutez une requête qui implique une opération de jointure externe dans SQL Server 2008
  • Message d'erreur lorsque vous effectuez une mise à jour ou une opération de suppression sur une table qui n'a pas d'index cluster créé dans SQL Server 2008
  • Une requête qui utilise des paramètres et l'option RECOMPILE renvoie des résultats incorrects lorsque vous exécutez la requête dans plusieurs connexions simultanément dans SQL Server 2008

Examinons un niveau de plus et considérons une seule commande, la MERGE. Il a été publié dans le cadre de SQL 2008 avec plusieurs problèmes, décrits dans les liens suivants:

En tant que tel, au moment de la version originale de SQL 2008, j'ai décidé de ne pas utiliser MERGE. J'utilise beaucoup MERGE maintenant, sur 2008 R2, et je pense que c'est une très bonne fonctionnalité.

Edit: voici la liste des défauts dans SQL 2012 qui ont été récemment corrigés . J'espère que cela aide.

Une autre modification: J'ai choisi MERGE pour une analyse plus détaillée, car il s'agit d'une amélioration très importante. En fait, c'est une étape majeure dans le rattrapage d'Oracle, et cela améliore notre productivité. En tant que tel, MERGE a été beaucoup commercialisé au moment de la sortie de SQL 2008. Pourtant, il n'était pas complètement prêt à être utilisé dans des systèmes de production sérieux lors de sa sortie, et il n'y avait pas de moyen facile de le savoir à partir des présentations/articles/articles de blog et autres.

De même, l'isolement des instantanés est une nouvelle fonctionnalité impressionnante qui fonctionne, mais l'invocation d'UDF scalaires dans les contraintes CHECK ne fonctionne pas dans tous les cas et ne doit donc pas être utilisée en production lorsque nous avons besoin de l'intégrité des données. Cependant, les deux nouvelles fonctionnalités ont été recommandées dans les présentations "Quoi de neuf dans SQL xxxx", ainsi que dans les livres, articles, etc., et avec un enthousiasme similaire.

Nous devons être très prudents avec les nouvelles fonctionnalités - elles ne seront pas toutes utiles/fiables/performantes.

14
A-K

Un point qui n'a pas été mentionné ici n'est absolument pas pertinent pour l'ensemble de fonctionnalités. Si vous faites une nouvelle version, vous pouvez différer la mise à niveau de la base de données pendant un peu plus longtemps, ce qui réduira les coûts de migration.

Pour un projet entièrement nouveau, vous avez un peu de répit pour contourner les bogues et les signaler au fournisseur s'ils se présentent, ce n'est donc pas un processus complètement incontrôlé. J'ai été impliqué dans l'un des premiers projets d'entrepôt de données sur SQL Server 2005 au moment où il allait à RTM et nous nous en sommes sortis.

Si l'ensemble des fonctionnalités de 2008R2 fait ce que vous voulez, la décision est à un certain risque de bugs/solutions de contournement par rapport à la valeur de reporter la nécessité de mettre à niveau et d'enregistrer un cycle de mise à niveau.

Lorsque vous achetez du neuf, le choix est très différent de celui que vous envisagez de mettre à niveau. En achetant du nouveau, je pense que vous devriez toujours acheter la dernière version que vous pouvez obtenir. La version 2008 ne sera plus prise en charge bien avant la version 2012. Mieux vaut recommencer avec le dernier car vous utiliserez ce backend pendant longtemps.

En ce qui concerne la nécessité du premier service pack, il sera disponible avant que vous le sachiez et puisque vous effectuez un nouveau développement, les problèmes qu'il résout ne vous affecteront probablement pas autant qu'une base de données héritée avec des millions d'enregistrements serait confrontée.

Maintenant, si vous obtenez simplement un nouveau serveur mais que vous y mettez une ancienne base de données, la question devient alors à partir de quelle mise à niveau? Si la base de données est déjà une base de données 2008, il sera nettement moins risqué d'utiliser la même version. Si vous effectuez une mise à niveau, vérifiez si vous pouvez mettre à niveau directement vers 2012 à partir de votre version.

6
HLGEM