web-dev-qa-db-fra.com

Mise à niveau de SQL Server 2005 vers 2016

Je dois me débarrasser de nos anciens serveurs, mais l'un d'eux inclut un serveur de base de données qui utilise actuellement SQL Server 2005.

Nous avons un nouveau serveur fonctionnant avec 2016, donc je voulais connaître la meilleure façon de mettre à niveau. D'après ce que j'ai découvert, nous aurions idéalement besoin de 2008 comme étape intermédiaire. Cependant, comme nous n'avons pas 2008 et cela coûte plus cher, j'ai envisagé la possibilité de faire une sauvegarde de 2005, puis une restauration de 2016.

J'ai testé cela avec une base de données très simple et cela semble fonctionner. Cependant, j'ai lu que je devrais changer le niveau de compatibilité de 100 (utilisé pour être 90) à 130. Ma question est, est-ce nécessaire? Après tout, certaines de ces anciennes bases de données sont d'anciennes bases de données héritées qui nécessitent très peu de modifications. ça en vaut vraiment la peine?

Alors, qu'est-ce que je ne pourrai pas utiliser les nouvelles façons sophistiquées de faire des choses, mais comme elles sont anciennes, est-ce important? Après tout, ce n'est pas comme si c'était nécessaire sinon nous n'aurions pas créé ces db. Je n'ai pas encore testé avec une base de données plus complexe mais je voulais m'assurer que je suis sur la bonne voie.

4
user165269

Étant donné que vous migrez vers un nouveau serveur, vous n'avez pas besoin d'apporter SQL Server 2008 dans le mix.

Comme indiqué par l'expert SQL Server Paul Randal , Vous pouvez mettre à niveau de n'importe quelle version 2005+ vers toute autre version . Paul déclare:

Il existe un mythe persistant selon lequel vous ne pouvez pas mettre à niveau une base de données vers une version supérieure à deux versions plus récente.

Ce n'est pas vrai.

Vous pouvez sauvegarder + restaurer (moyen le plus sûr) ou détacher + attacher (pas un moyen sûr) de SQL Server 2005 (ou supérieur) vers toute autre version plus récente. Vous ne pouvez tout simplement pas effectuer une mise à niveau sur place vers la dernière version de SQL Server 2005.

En ce qui concerne le changement du niveau de compatibilité, je vous recommande de ne pas le changer pendant plusieurs semaines et de laisser la poussière se déposer de la mise à niveau. Une fois que vous êtes certain que tout fonctionne correctement depuis la mise à niveau, pourquoi ne pas augmenter le niveau de compatibilité au maximum et surveiller les performances. Vous pourrait voir même une amélioration des performances. Cependant, les niveaux de compatibilité à partir de 120 (SQL Server 2014) et au-dessus mettent en jeu le nouvel estimateur de cardinalité, ce qui pourrait présenter certains problèmes de performances. Si vous le souhaitez, vous pouvez être plus sélectif dans vos tests du nouvel estimateur de cardinalité en utilisant OPTION (QUERYTRACEON 2312) sur les requêtes sélectionnées. Vous pouvez toujours réduire le niveau en cas de problème. Faites quelques recherches sur Internet sur SQL Server 2014 Problèmes d'estimation de la cardinalité pour vous familiariser avec les problèmes possibles.

À un moment donné dans le futur, lorsque vous effectuez une mise à niveau vers une version ultérieure de SQL Server, vous [~ # ~] devrez [~ # ~] augmenter éventuellement le niveau de compatibilité.

Enfin, consultez Mettre à niveau SQL Server pour une liste de contrôle des éléments à prendre en compte pour la mise à niveau de SQL Server.

Référencement Niveau de compatibilité ALTER DATABASE (Transact-SQL) :

Du point de vue de l'application, l'objectif devrait toujours être de mettre à niveau vers le dernier niveau de compatibilité à un moment donné, afin d'hériter de certaines des nouvelles fonctionnalités, ainsi que des améliorations des performances effectuées dans l'espace de l'optimiseur de requête, mais pour le faire dans d'une manière contrôlée. Utilisez le niveau de compatibilité inférieur comme aide à la migration plus sûre pour contourner les différences de version, dans les comportements contrôlés par le paramètre de niveau de compatibilité approprié. Pour plus de détails, y compris le flux de travail recommandé pour la mise à niveau du niveau de compatibilité de la base de données, voir Meilleures pratiques pour la mise à niveau du niveau de compatibilité de la base de données .

1
Scott Hodgin

Vous devez modifier le niveau de compatibilité de base de données à au moins 100, car sur SQL Server 2016, le niveau de compatibilité de base de données minimum pris en charge est 100.

Voir: https://docs.Microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-2017

Une restauration de sauvegarde fonctionnerait simplement.

J'ai détaillé étape par étape avant et après la migration des étapes qui pourraient vous aider. https://dba.stackexchange.com/a/50315/878

Testez le processus de migration car il y aura des changements importants.

De plus, en 2014, le niveau de compatibilité DB de 90 est pris en charge. C'est donc quelque chose que vous souhaitez explorer si vous ne pouvez pas modifier le niveau de compatibilité DB.

Lors du sommet PASS, j'ai appris qu'une application devait être certifiée en fonction du niveau de compatibilité et non de la version de SQL Server.

0
Kin Shah