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 :

Rollback trop long après un déploiement par script [2014]


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut Rollback trop long après un déploiement par script
    Salut,
    Ma société vient de se voir confier une grosse TMA.
    La base de données fait 400Go répliquée sur deux sites.
    On est donc pas en code first. Du coup, je suis trop jeune pour connaitre les anciens usages pour revenir en arrière quand on passe des scripts d'alter table etc pour déployer une évolution.
    SQL Server peut-il automatiquement rollbacker le passage d'un script ou on doit pondre le script pour revenir en arrière ?
    L'option restaure backup est exclue car ça prend 6 heures on peut faire jusqu'à un déploiement par jour.
    J'avoue que je suis bloquée. Je ne sais pas du tout quoi proposer.
    Pourriez-vous m'aider ?
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Pour faire simple et rapide :
    • Rollback possible sur les instructions DML (celles qui modifient les données : ajout, modification, suppression de lignes)
    • Pas de rollback possible sur les instructions DDL (celles qui modifient les structures : création/modification/suppression de tables, index, vues...)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut
    Du coup comment font les grosses boites ?
    Lorsqu'on a un cluster, c'est possible genre de casser la liaison, de lancer l'appli sur un seul serveur en gardant l'autre dans l'ancienne version et si ça marche de reconstruire la liaison pour resynchroniser avec la nouvelle structure ou le contraire si ça ne fonctionne pas ?
    Merci
    Désolé si ces questions sont bêtes mais je ne suis pas du tout dba

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par Nadinette Voir le message
    Du coup comment font les grosses boites ?
    Chez un grand site marchand du web, géré sur SQL-Serveur, les livrables contenaient obligatoirement le ou les scripts de livraison ainsi que le ou les scripts de rollbacks.
    Ces scripts sont enchaînés sur tous les environnements hors prod : MEP puis Rollback dans la foulée, vérification que la plateforme est bien à l'état initial, puis MEP et vérification que la plateforme est bien à l'état attendu.
    Une fois ces étapes validées, le script de MEP pouvait être passé en production, le script de rollback étant jugé suffisamment fiable.
    Je me demande même si le MEP => Rollback n'était pas joué deux fois (en hors prod), mais je ne me souviens plus exactement.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Pour faire simple et rapide :
    • Rollback possible sur les instructions DML (celles qui modifient les données : ajout, modification, suppression de lignes)
    • Pas de rollback possible sur les instructions DDL (celles qui modifient les structures : création/modification/suppression de tables, index, vues...)
    J'ai l'impression que Nadinette parle de Rollback au sens général de retour en arrière, pas un vrai rollback au sens transaction SQL
    Peux-tu nous confirmer ça ?

    Pour gérer le modèle de données, j'ai déjà employé des outils comme RedGate SQL Compare qui permet de générer des scripts de retour en arrière vers une version particulière mais ça demande de faire du versionnage proprement. Visual Studio peut aussi faire ça.
    Dans un autre société, pour chaque modification effectuée, on avait le script et un script de retour en arrière.
    Évidemment, il y a des limitations dans ces modifications : si tu supprimes une colonne, tu peux la recréer mais le contenu ne sera plus là.

    Cela-dit si c'est un besoin régulier de retour en arrière en Production, il faudrait sérieusement revoir les pratiques de tests et validations dans les autres environnements en premier.
    C'est une procédure qui devrait être employée de façon très exceptionnelle.

  6. #6
    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
    Pour faire simple et rapide :
    • Rollback possible sur les instructions DML (celles qui modifient les données : ajout, modification, suppression de lignes)
    • Pas de rollback possible sur les instructions DDL (celles qui modifient les structures : création/modification/suppression de tables, index, vues...)
    L'annulation d'une opération DDL est possible sur SQL Server (par ex CREATE TABLE , ADD COLUMN etc ...)

    Dans un autre société, pour chaque modification effectuée, on avait le script et un script de retour en arrière.
    Cela-dit si c'est un besoin régulier de retour en arrière en Production, il faudrait sérieusement revoir les pratiques de tests et validations dans les autres environnements en premier.
    C'est une procédure qui devrait être employée de façon très exceptionnelle.
    Il faut en effet prévoir les scripts de retour (UNDO) dans le meilleur des mondes. Mais je rejoins Nadinette sur le fait que tout cela doit être validé et testé en amont avant de passer en prod.
    Les environnements INT / ACC etc .. sont faits pour cela.

    Évidemment, il y a des limitations dans ces modifications : si tu supprimes une colonne, tu peux la recréer mais le contenu ne sera plus là.
    En principe d'une version N à N+1 on ne supprime jamais une colonne qui est censée ne plus être utilisée et on attend le passage à une version >= N+2. En cas de souci, il possible de revenir en arrière assez facilement. C'est ce que nous pratiquons en tout cas chez nous dans le cadre de notre politique de CI/CD.

    ++

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    En principe d'une version N à N+1 on ne supprime jamais une colonne qui est censée ne plus être utilisée et on attend le passage à une version >= N+2. En cas de souci, il possible de revenir en arrière assez facilement. C'est ce que nous pratiquons en tout cas chez nous dans le cadre de notre politique de CI/CD.
    C'est intelligent ça !
    Perso, dans les pratiques que j'ai vu, on supprime tout de suite... ou jamais !

    Si c'est une colonne potentiellement sensible à supprimer, j'ai tendance à copier les données dans une table temporaire que je supprimerai quelques mois plus tard.

  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
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    C'est intelligent ça !
    Perso, dans les pratiques que j'ai vu, on supprime tout de suite... ou jamais !

    Si c'est une colonne potentiellement sensible à supprimer, j'ai tendance à copier les données dans une table temporaire que je supprimerai quelques mois plus tard.
    Ca joue aussi tant qu'on peut revenir en arrière

  9. #9
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut
    Salut,

    On est en présence d'une application ancienne développée avec des vielles techniques et une base de données maintenue par un développeur qui était le moins mauvais de la boite en SQL et en aucun cas un DBA.
    Il y a souvent des problèmes lors des livraisons mixtes (Code + Data).

    Pour rollbacker le code ça prend 5 minutes.
    pour remonter un backup ca prend 6 heures !

    Je veux trouver une solution qui réduirait drastiquement le temps de remontée du backup OU trouver une autre astuce.

    Merci

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    • Pas de rollback possible sur les instructions DDL (celles qui modifient les structures : création/modification/suppression de tables, index, vues...)
    C’est faux !
    Sous SQL Server, les commandes DDL, à quelques très rares exceptions près, peuvent être enrôlées dans une transaction.

    A+

    PS : J’avais pas vu la réponse, ci-dessus, beaucoup plus complète, de mikedavem

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

Discussions similaires

  1. Texte trop long remplacé par 3 petits points
    Par artifrui dans le forum Langage
    Réponses: 3
    Dernier message: 03/09/2012, 17h52
  2. Script, telnet et timeout trop long
    Par Chris1845 dans le forum Linux
    Réponses: 5
    Dernier message: 02/07/2009, 12h58
  3. script sql trop long
    Par foulla dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 18/07/2008, 18h27
  4. Déploiement Tomcat trop long
    Par batataw dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 26/09/2007, 14h01
  5. script trop long message afficher par navigateur
    Par nocoment dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/05/2007, 18h40

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