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

Réplications SQL Server Discussion :

Procèdure Stockée Transfert de Base


Sujet :

Réplications SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 400
    Points : 46
    Points
    46
    Par défaut Procèdure Stockée Transfert de Base
    Bonjour,
    J'ai une base Source
    J'ai une base Cible,

    On me demande de mettre en place une Procédure Stockée, qui fait ceci :
    1) Sélectionner toutes les tables de la Base source
    2) Supprimer toutes les tables de la Base cible
    3) Copier la structure des tables de la Base source dans la Base cible (Créer les structures des tables source dans la Base cible)

    J'ai essayé de faire ceci (désolé mais je n'ai jamais développé de Procédures Stockées) :

    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
     
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE PROCEDURE [dbo].[Mirror] (@Base_Source VARCHAR(255))
    AS
    BEGIN
    DECLARE @listeTable VARCHAR(4000)
    SET @listeTable = 
    'Use [' + '"' + @Base + '"]
    Select Distinct [TABLE_NAME]
    From [INFORMATION_SCHEMA].[COLUMNS]
    Where [TABLE_CATALOG] = ' + '"' + @Base + '"'
     
    EXEC (@listeTable)
    END
    GO
    ===>> Question :

    Comment je pourrai :
    1) Supprimer toutes les tables de ma Base Cible ? ( Tables ne fonctionne pas sur Sql Server)

    2) Comment je pourrai créer la structure des tables source dans ma Base Cible ? (J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * into @listeTable
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    C'est quoi le but ?
    Est-ce que c'est une fonction one-shot ou c'est récurrent ?
    Lancé à la demande ou automatiquement ?
    Est-ce qu'il faut conserver les données de la base de données initiales ?
    Conserver Les autres objets de la base de données source ?

    Personnellement, pour un modèle de données qui évolue et qui est en développement, j'ai des script de création / modification qui part de la version 0 et qui va la modifier jusqu'à la version actuelle. (ok, c'est mon système mais je n'ai rien inventé )
    Pour recréer le modèle à la version 3.1, j'ai juste à appliquer tous les scripts, l'un après l'autre !

    C'est une solution mais on peut faire autrement. Pour savoir ce qui serait le plus pertinent pour toi, il faut nous préciser ton besoin.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 400
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    C'est quoi le but ?
    Le but est d'impacter les mise à jour (base source ==>> base cible) automatiquement

    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Est-ce que c'est une fonction one-shot ou c'est récurrent ?
    Non cette procédure (ou fonction) va tourner tous les 2 heures via un Job Sql (ça au moins je sais faire )

    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Lancé à la demande ou automatiquement ?
    Yes via le Job

    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Est-ce qu'il faut conserver les données de la base de données initiales ?
    Non, uniquement la structure sans les données (sinon je serai passé par un Backup/restaur)


    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Conserver Les autres objets de la base de données source ?
    Oui, ça sera un copier / coller et non un couper /

    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Personnellement, pour un modèle de données qui évolue et qui est en développement, j'ai des script de création / modification qui part de la version 0 et qui va la modifier jusqu'à la version actuelle. (ok, c'est mon système mais je n'ai rien inventé )
    C'est quoi ce script ?

    Merci pour ton aide

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par kadden Voir le message
    Le but est d'impacter les mise à jour (base source ==>> base cible) automatiquement
    Les 2 bases dépendent du même serveur ?
    A quoi sert la base cible ? Copie de sécurité ?
    La base cible est consultable ? Quid lors de l'actualisation ?

    Citation Envoyé par kadden Voir le message
    Non cette procédure (ou fonction) va tourner tous les 2 heures via un Job Sql (ça au moins je sais faire )
    Et si le job dure plus de 2 heures ?

    Citation Envoyé par kadden Voir le message
    Non, uniquement la structure sans les données (sinon je serai passé par un Backup/restaur)
    La structure de la base source serait figée ? définitivement ?

    Citation Envoyé par kadden Voir le message
    Oui, ça sera un copier / coller et non un couper /
    Réplication par capture instantanée ?
    http://fadace.developpez.com/mssql/replication/
    Philippe.

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Et si le job dure plus de 2 heures ?
    Vu qu'il ne copie que la structure, à moins qu'un lock le bloque, ou qu'il y ait des millions de tables, je vois pas trop comment ça pourrait durer aussi longtemps

    Sinon, c'est simple.
    Dans la base MASTER, tu interroge SYSDATABASE.
    Ensuite, tu te connecte dans chaque base et tu interroge SYSTABLE et SYSCOLUMN.
    Après pour les indexes et autres clés, tu as aussi des tables dédiées SYS* dans chaque base de données.

    Enfin, pour les procédures stockées, fonctions et triggers, là ça va être plus chaud. Il vaut mieux passer par des scripts SQL à part, maintenus en même temps que la base d'origine (car par mesure de sécurité, on peut les crypter, et dans ce cas, on ne peut plus les relire dans les tables SYS* il me semble).
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il serait bien plus simple de passer par un trigger de base de données, afin de récupérer directement les commandes DDL effectuées sur la base source. Il ne reste ensuite qu'a les rejouer sur la base cible

  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
    21 772
    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 : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Il serait bien plus simple de passer par un trigger de base de données, afin de récupérer directement les commandes DDL effectuées sur la base source. Il ne reste ensuite qu'a les rejouer sur la base cible
    Oh que oui !!!

    MORALITÉ : comment faire des usines à gaz par ignorance !

    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/ * * * * *

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/12/2008, 12h07
  2. appeler une procédure stockée dans une base mysql
    Par mennou dans le forum Hibernate
    Réponses: 4
    Dernier message: 16/06/2008, 01h58
  3. Transférer une procédure stockée d'une base vers une autre
    Par Delphi-ne dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 06/05/2008, 15h54
  4. Copier une procédure stockée d'une base vers une autre
    Par Delphi-ne dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/04/2008, 15h46
  5. Liste des procédures stockées d'une base de données
    Par Delphi-ne dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/03/2008, 19h31

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