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 stocké pour backuper une table


Sujet :

Administration SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Points : 44
    Points
    44
    Par défaut procédure stocké pour backuper une table
    bonjour à tous,
    je voudrais savoir est ce qu'il y un procédure stocké qui me permet de facilité la tache suivant:j'ai 2 tables qui ont la même structure (Table1 et Table2) et je veux à chaque moment donnée faire un backup pour la table1 càd copier les enregistrements de la table1 vers la table2 avec des conditions (Where) et supprimer ces enregistrement de la table1.

    merci pour vos réponse

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    à chaque moment donnée
    Cela signifie-t-il après chaque INSERT ou UPDATE ?
    Si oui, vous pouvez faire cela avec un trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE TRIGGER TR_AIU_maTableSource
    	ON dbo.maTableSource
    AFTER INSERT, UPDATE
    AS
    BEGIN
    	INSERT INTO dbo.maTableBackup
    	SELECT mesColonnes
    	FROM INSERTED
    	WHERE mesConditions
     
    	DELETE FROM dbo.maTableSource
    	FROM dbo.maTableSource T
    	JOIN INSERTED I ON I.ID = T.ID
    	WHERE mesConditions
    END
    @++

  3. #3
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Peut être implementé également une gestion d'erreurs avec le code que vous a donné elsuket qui vous permet par exemple de vérifier si la donnée a bien été insérée dans votre table 2 avant de la supprimer de la table 1 ... a voir si cela vous est nécessaire...

    En complétant le code de elsuket :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    CREATE TRIGGER TR_AIU_maTableSource
    	ON dbo.maTableSource
    AFTER INSERT, UPDATE
    AS
    BEGIN
    	INSERT INTO dbo.maTableBackup
    	SELECT mesColonnes
    	FROM INSERTED
    	WHERE mesConditions
     
                 -- rollback en cas d'erreur insert dans table backup
                IF @@Error <> 0
                ROLLBACK TRANSACTION
     
    	DELETE FROM dbo.maTableSource
    	FROM dbo.maTableSource T
    	JOIN INSERTED I ON I.ID = T.ID
    	WHERE mesConditions
     
                 -- rollback en cas d'erreur de suppression dans table source
                IF @@Error <> 0
                ROLLBACK TRANSACTION
    END
    ++

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    S'il y a erreur à l'INSERT le DELETE ne se fera pas, donc la transaction sera défaite automatiquement par SQL Server

    @++

  5. #5
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Autant pour moi elsuket ,

    vu que dans le trigger la transaction est implicite elle n'est validée qu'à la fin de l'exécution de l'ordre.

    Merci d'avoir corriger cette bétise

Discussions similaires

  1. [2005] Créer une procédure avec pour paramètre une table
    Par Sergejack dans le forum Contribuez
    Réponses: 2
    Dernier message: 01/10/2009, 14h22
  2. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  3. Procédure stockée pour créer une table.
    Par Khaoula.85 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 13/03/2009, 20h15
  4. Réponses: 2
    Dernier message: 22/10/2008, 13h14
  5. Procédure stockée pour restaurer une base
    Par nixonne dans le forum Développement
    Réponses: 2
    Dernier message: 19/08/2008, 12h55

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