IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Procédure de Rollback Migration SQL 2008 R2 depuis SQL 2000


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut Procédure de Rollback Migration SQL 2008 R2 depuis SQL 2000
    Bonjour,

    Je suis chargé dans mon entreprise de procéder aux taches suivantes dans un process de migration d'un ensemble de base de SQL serveur 2000 vers SQL serveur 2008 R2
    - Modification des scripts ( Ps , Fonction, vue, trigger ) pour assurer la compatibilité SQL Serveur 2008. Ce point-là ne présente pas de difficulté pour moi, et est en cours. ( Les types de données restent les mêmes, on n'utilise pas les nouveaux type de données de SQL serveur 2008 R2. )

    - Élaboration d'un processus de retour en arrière à l'issue de la migration, si des problème de performance viendrait se déclarer sur le tard. ( donc revenir de SQL server 2008 R2 vers SQL serveur 2000 )
    Bien entendu, une longue période de recette et de test de montée en charge est prévue, mais ce script de Rollback général est une contrainte du projet.

    Et c'est sur ce point que je rencontre des difficultés :
    - Ma première contraintes est la volumétrie : toute bases additionnées, on arrive environ à 0,5 To de données.
    - Ma seconde contrainte est que cette volumétrie est essentiellement due a des colonnes blob...

    La migration elle-même sera faite avec un backup des base en SQL 2000 et un restore en SQL 2008 R2, pour chaque base, puis compilation de tous les script des objets non compatible.

    Pour le retour arrière, la stratégie que j'envisage pour le moment est de faire une grosse mécanique à base de bcp, ( générée automatiquement à l'aide des infos dispos dans les vues de INFORMATION_SCHEMA ) dans le style suivant :

    Pour chaque base :
    Export des data en différentiel.
    - Génération d'une liste des enregistrement a deleter, pour chaque table.
    - Export des données en différentiel avec bcp, pour chaque table.
    Import des data
    Dans l'ordre montant des intégrités référentielles, pour chaque table :
    - delete from openrowset ( la liste des enregistrement à deleter )
    Dans l'ordre descendant des intégrités référentielles, pour chaque table :
    - bulk insert des données en différentiel ( avec KEEPIDENTITY ) ( et utilisation du script de sqlpro pour détruire/reconstruire les index automatiquement )

    Mes Questions :
    1- les blob : Comment les blob sont gérés par bcp en export et import ?
    2- Ma démarche : Vous sembles-t-elle valide ? Suis en train de réinventer la roue ? Des outils sur le marché font-ils ce genre de chose ?

    Je vous remercie d'avance pour toute aide que vous pourrez m'apporter.

    phg_dev

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Normalement, l'upgrade side by side doit te permettre un retour arrière confortable. Les problèmes de performance sur le tard dont tu parles doivent être minimisés par des tests poussés sur la 2008R2, en utilisant le replay dans profiler par exemple.

    Maintenant s'il faut vraiment blinder la migration, je testerai la solution de faire une réplication snapshot en publiant de 2008R2 vers 2000 (contrainte il faudra que la distribution soit sur l'instance 2008R2). L'agent de snapshot prend ensuite en charge tout le déplacement de données de l'instance 2008R2 vers l'instance 2000 en automatisant la partie BCP + structure des objets. Il faut valider que tu as bien des clés primaires sur toutes tes tables.

    Ca vaut peut être le coup d'essayer pour éviter d'avoir à gérer tous les BCP et les scripts à réappliquer ensuite sur l'instance 2000. (je viens de faire un petit test entre une 2008SP1 et une 2000SP4, et qq tables avec des champs text, cela fonctionne bien).

    Sinon, une autre solution, SSIS et l'export / import de données.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    Merci pour la réponse,
    J'avais cru que la réplication n'était pas possible de SQL Server 2008 R2 vers SQL Server 2000 SP4 ( j'avais oublié de préciser le service pack ).

    Sinon, pour répondre à votre question : oui, je dois vraiment blinder la migration.

    Je vais soumettre cela aux admin systeme. merci pour le test en tout cas.
    J'attends la réponse de mes admin pour vous confirmer la résolution du cas.

    ( Cela dit, juste pour ma culture perso, si vous savez comment réagit bcp avec les colonne blob... )

    Merci beaucoup,

    phg_dev

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    L'agent de snapshot utilise l'équivalent de bcp pour effectuer les sorties et les injections de données. Sur le mini-poc que j'ai fait hier, il n'y a pas eu de problème de chargement de BLOB, mais je n'avais pas 500GB de données non plus. Il faut faire des tests plus poussés avec du maquettage et davantage de données. Si tu as déjà ton instance en 2008R2 et une instance de test par exemple en 2000SP4, tu peux déjà commencer à évaluer les différentes solutions.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    Merci pour la réponse... mais pour des raisons internes, l'utilisation de la réplication par snapshot n'est pas possible...

    J'ai vu une fonctionnalité de synchronisation de donnée entre deux bases présentes dans Toad for SQL server. Que pensez-vous de cette solution ?

    Sinon, je vais être obligé de faire "à la main" ce rollback de migration...

    Je vous remercie d'avance.

    phg_dev

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Je ne connais pas Toad. Les interfaces graphiques me donnent des boutons, surtout si elles portent un nom de batracien

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Je me permet d'attirer votre attention sur différents points de votre demande :

    Citation Envoyé par phg_dev Voir le message
    ...( Les types de données restent les mêmes, on n'utilise pas les nouveaux type de données de SQL serveur 2008 R2. )
    ATTENTION de nombreux types 2000 sont considérés comme obsolètes et vont être retirés dans la futur. Cela a été annoncé dans 2005 et nous en somme à 3 version (2005, 2008 et 2008 R2), en attendant 2012 (Denali). Vous prenez donc un gros risque de pérennité en sus de problèmes de performances.
    Types concernés : TEXT, NTEXT, IMAGE, TIMESTAMP.
    Extrait de l'aide en ligne :
    "
    Les types de données ntext, text et image seront retirés dans une prochaine version de Microsoft SQL Server. Évitez par conséquent d'utiliser ces types de données dans tout nouveau travail de développement et prévoyez la modification des applications qui les utilisent actuellement. Utilisez à la place les types nvarchar(max), varchar(max) et varbinary(max).
    ...
    La syntaxe timestamp est abandonnée. Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
    "

    Citation Envoyé par phg_dev Voir le message
    - Ma seconde contrainte est que cette volumétrie est essentiellement due a des colonnes blob...
    C'est là que vous auriez peut être intérêt d'utiliser le stockage de fichiers à l'aide du FILESTREAM ! (nouveau dans 2008)

    La migration elle-même sera faite avec un backup des base en SQL 2000 et un restore en SQL 2008 R2, pour chaque base, puis compilation de tous les script des objets non compatible.
    Pourquoi pas un detach, copie, attach et conservation de la base ancienne en RFEAD ONLY ??? C'est encore plus simple, plus rapide et plus synchrone ! Le danger de la sauvegarde est que des applications peuvent produire des données pendant et après la sauvegarde !

    Pour le retour arrière, la stratégie que j'envisage pour le moment est de faire une grosse mécanique à base de bcp, ( générée automatiquement à l'aide des infos dispos dans les vues de INFORMATION_SCHEMA ) dans le style suivant :

    Pour chaque base :
    Export des data en différentiel.
    - Génération d'une liste des enregistrement a deleter, pour chaque table.
    - Export des données en différentiel avec bcp, pour chaque table.
    Import des data
    Dans l'ordre montant des intégrités référentielles, pour chaque table :
    - delete from openrowset ( la liste des enregistrement à deleter )
    Dans l'ordre descendant des intégrités référentielles, pour chaque table :
    - bulk insert des données en différentiel ( avec KEEPIDENTITY ) ( et utilisation du script de sqlpro pour détruire/reconstruire les index automatiquement )

    Mes Questions :
    1- les blob : Comment les blob sont gérés par bcp en export et import ?
    2- Ma démarche : Vous sembles-t-elle valide ? Suis en train de réinventer la roue ? Des outils sur le marché font-ils ce genre de chose ?
    1) pas terrible ! Lire : http://support.microsoft.com/kb/317016, voyez aussi du côté de Textcopy.exe
    2) non, pas génial : long, lent et complex => chance de se tromper très haute et après...

    Effectivement la réplication snapshot me parait idéale. Pourquoi ne voulez vous pas le faire et voulez-vous recourir à une usine à gaz beaucoup plus complexe alors que vous avez déjà la solution ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Une question bête :

    N'avez vous pas un environnement de recette chez vous ?
    Ce qui vous permettrait de tester votre migration en condition réel avec une charge réelle avant la mise en production ...

    ++

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    Bonjour,

    Juste pour vous remercier tous de vos indications.
    Sachez que la technique retenue est une mélange de réplication transactionnelle ( afin de pouvoir gérer nos gros volume de données, impossible à gérer avec une solution entièrement en réplication Snapshot ) et de réplication SnapShot pour tous les objets a faible volumétrie.

    MErci !

    phg_dev

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SQL 2008 R2 : Agent SQL server pas pris en charge
    Par FlameOn dans le forum Administration
    Réponses: 2
    Dernier message: 12/05/2014, 10h35
  2. Migration d'une procédure stockée depuis SQL serverr
    Par mercure07 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 29/12/2011, 08h37
  3. Champs disponible de l'AD depuis SQL 2008
    Par lucazzo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/09/2009, 09h41
  4. Linked server AD depuis SQL 2008
    Par lucazzo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 02/09/2009, 14h41
  5. Réponses: 3
    Dernier message: 11/10/2005, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo