2 votes

Quel est le meilleur moyen de mettre à niveau SQL 7 vers SQL 2008?

Je mets à jour un vieux site web et transfère tout sur de nouveaux serveurs et les dernières versions de logiciels.

Dans le cadre de cette mise à jour, je dois déplacer une base de données d'un serveur Win2000 exécutant MS-SQL 7 vers un nouveau serveur Win2008 64 bits exécutant MS-SQL 2008.

J'ai essayé de faire une sauvegarde et une restauration de la base de données lors d'un test précédent, et SQL 2008 ne restaure pas les sauvegardes de la version 7.

Je pensais pouvoir essayer d'utiliser BCP pour exporter les données et les importer dans une base de données vide avec le même schéma sur la machine 2008.

Sinon, je pourrais essayer d'installer SQL 2000 ou SQL 2005 sur le nouveau serveur et restaurer à partir de là, puis soit :

  • Détacher cette base de données et l'attacher dans le moteur SQL 2008

OU

  • Faire une sauvegarde de cette base de données et la restaurer en 2008

Il s'agit d'un système de production, donc le transfert des données entraînera une interruption du système pendant un certain temps, mais j'aimerais que cela soit réduit au minimum.

Quelle serait la meilleure façon d'aborder cette mise à niveau ? Quels pièges devrais-je éviter ? Dois-je utiliser la méthode BCP ou la version intermédiaire de la base de données ?

3voto

Si vous souhaitez effectuer une mise à niveau, passez par SQL 2000 ou SQL 2005, puis par SQL 2008. Il existe de nombreuses documentations sur la manière de procéder. Lisez-les avant de commencer. Sérieusement.

Votre méthode de transfert des structures et des données est également une option, mais elle peut rencontrer des problèmes. Je recommanderais la méthode de mise à niveau. Personnellement, je le ferais via SQL 2005, puis jusqu'à 2008.

2voto

Sankar Reddy Points 1374

Vous ne pouvez pas passer directement de SQL Server 7 à SQL Server 2008. Ce document liste les options possibles prises en charge. [http://msdn.microsoft.com/en-us/library/ms143393.aspx]

Votre meilleure option est de passer de SQL Server 7 à SQL Server 2000, puis de SQL Server 2000 à SQL Server 2008. Et ne faites pas plus de sauts que nécessaire. C'est votre meilleure option pour obtenir des informations fiables. http://www.microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7&displaylang=en

Après la mise à niveau

  1. Soyez prêt à rencontrer des problèmes de performance, car l'optimiseur de requête est réécrit à partir de zéro et vous obtiendrez des plans complètement différents, soyez prêt à réécrire une partie du code. Ne vous attendez pas à ce que le passage à SQL Server 2008 résolve les problèmes (du moins) au début.
  2. Assurez-vous de reconstruire tous les index ou de mettre à jour les statistiques avec un balayage complet
  3. Exécutez un DBCC UPDATEUSAGE et cela aidera les vues système (DMVs) à corriger les comptages de lignes.
  4. ALTER DATABASE SET PAGE_VERIFY CHECKSUM et cela vous aidera à détecter les corruptions IO tôt. Idéalement, vous voulez définir cette option avant de reconstruire les index.

Il existe de nombreux autres pièges dans lesquels vous pourriez tomber, donc la planification et les devoirs sont la clé d'une mise à niveau réussie.

1voto

David Spillett Points 22424

Personnellement, je choisirais la méthode de la restauration sur un serveur intermédiaire. Copier la structure et les données devrait également fonctionner, mais cela pourrait en fait prendre plus de temps que deux opérations de détachement + copie + attache.

Si vous choisissez l'approche de copie de structure et de données BCP, assurez-vous de définir correctement le niveau de compatibilité de la base de données de destination pour réduire les problèmes dus aux changements dans SQL lui-même. Voir http://msdn.microsoft.com/en-us/library/ms178653(SQL.90).aspx pour plus de détails sur ces différences.

Même avec un niveau de compatibilité défini en conséquence, vous devriez planifier un test de régression complet de toute application utilisant la base de données car il peut encore y avoir de légères différences là où votre code repose sur un comportement "non défini" qui était constant dans SQL7 mais qui n'est pas garanti de l'être dans des versions ultérieures.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X