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

MS SQL Server Discussion :

[SQL Server 2005] Ordre de création des vues


Sujet :

MS SQL Server

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut [SQL Server 2005] Ordre de création des vues
    Bonjour,

    je me pose une question :
    J'ai une première base où plusieurs vues ont été créées, et je souhaite les copier sur une autre base.

    Or ces vues s'appellent entre elles, il y a des inter-dépendances. Comment pourrais-je faire pour retrouver la "hiérarchie", afin de créer mes vues dans le bon ordre ?

    J'ai essayé de me baser sur la date de création de la vue, mais j'ai rencontré un cas qui posait problème :
    1/ Création de la vue A
    2/ Création de la vue B qui tape dans la vue A
    3/ Suppression de la vue A
    4/ Création de la vue A' qui remplace la vue A (avec le même nom).

    Dans ce cas, ma vue A' a bien été créée après la vue B, mais pourtant lorsque je vais recréer mes vues sur la nouvelle base, il faudra que je crée A' avant B.

    Je ne sais pas si c'est un hasard, mais lorsqu'on génère le script des vues via l'interface SQL Server, elles sont générées dans le bon ordre. J'ai bien A' d'abord, puis B.
    C'est un hasard ?
    J'aurais tendance à dire que je ne vois pas par quel miracle SQL Server détecterait que ma vue A' tape dans une autre vue...

    Mais j'aimerais avoir votre avis

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 243
    Par défaut
    J'aurais tendance à dire que je ne vois pas par quel miracle SQL Server détecterait que ma vue A' tape dans une autre vue...
    Tout simplement parce qu'il analyse le contenu des vues et en détecte les dépendances.
    mais lorsqu'on génère le script des vues via l'interface SQL Server, elles sont générées dans le bon ordre
    Pourquoi t'embête-tu à vouloir tenter de recréer à la main des vues dans ta base puisque SQLServer te fourni le script de création tout fait. Utilise directement ce script pour recréer tes vues dans la nouvelle base

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Merci de tes réponses.
    Je ne pensais pas que SQL Server "parsait" le contenu de la vue

    Le soucis c'est que :
    1/ Les scripts générés sont du type "If not exist", c'est à dire que si la vue existe déjà, il n'y a pas de drop puis create (en tout cas par défaut). Mais peut-être que ca se paramètre. A vérifier.
    2/ Je réalise ça dans le cadre de la création d'un outil permettant de mettre à jour une base par rapport à une autre :
    - Comparaison des 2 bases
    - Mise à jour de la structure des tables existantes (ajout des colonnes manquantes, modification des colonnes etc...)
    - Ajout des tables manquantes dans la base cible
    - Mise à jour des procédures stockées/fonctions/triggers/vues
    - Génération de scripts SQL permettant la mise à jour, ainsi que d'un fichier .bat permettant de lancer les scripts.

    Le but c'est que je lance ma proc, et ca me sort un beau répertoire sur le serveur, avec tous les scripts nécessaires pour mettre à jour ma base cible par rapport à une base source.
    Je génère donc moi même les scripts, je ne sais pas comment générer automatiquement le script standard SQL Server pour la regénération des vues, procédures, fonctions etc...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Bon, en fait SQL Server ne les génère pas dans le bon ordre non plus...

    Je suis à cours d'idées, et je ne sais pas comment transférer toutes mes vues d'une base à une autre...

    Si quelqu'un a des pistes je suis preneur

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Tu as sp_depends (procédure stockée systèmes des dépendances) mais à ma connaissance rien n'indique que cette table système soit à jour, pour les procédures stockées elle n'est pas à jour, pour les vues je ne suis pas sure.

    Va voir ici peutêtrehttp://www.mssqltips.com/tip.asp?tip=1294

    Des projets similaires au tien existent déjà, notamment opendbdiff
    http://www.codeplex.com/OpenDBiff/


    a+
    Soazig

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 990
    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 990
    Billets dans le blog
    6
    Par défaut
    Elle (sysdepends) peut ne jamais être à jour.

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

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Merci, je vais jeter un coup d'oeil. Mais si j'ai bien compris il y a dors et déjà des incertitudes sur cette méthode.
    Il n'y a donc aucun moyen de transférer efficacement les vues entre 2 bases ?
    Vous n'avez jamais été confronté à cette problématique ?

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Coucou,
    Merci, je vais jeter un coup d'oeil. Mais si j'ai bien compris il y a dors et déjà des incertitudes sur cette méthode.
    Il n'y a donc aucun moyen de transférer efficacement les vues entre 2 bases ?
    Vous n'avez jamais été confronté à cette problématique ?
    Confronté si, trouvé la solution miracle non.
    Personnellement, pour ce qui est transact sql, je me suis fait un outil qui génère les scripts des PS, vues, function qui sont listées dans un fichier xml dans l'ordre d'apparition dans ce fichier.

    Par rapport à ta problèmatique le projet Opendbdiff dont je parlais dans un post précédent est opensource et son but est de comparer deux bases de données et de générer le script pour passer de l'une à l'autre. Tu peux donc soit t'inspirer de son code ou carrément l'utiliser.
    A+
    Soazig

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Citation Envoyé par soazig Voir le message
    Confronté si, trouvé la solution miracle non.
    Personnellement, pour ce qui est transact sql, je me suis fait un outil qui génère les scripts des PS, vues, function qui sont listées dans un fichier xml dans l'ordre d'apparition dans ce fichier.
    On en est donc au même point, sauf que dans mon cas je ne vais pas les chercher dans un fichier, je prends tous les objets de la base (triggers, vues, procédures, fonctions) et je génère des scripts de DROP puis CREATE pour tous les objets (un script par type d'objet).
    Citation Envoyé par soazig Voir le message
    Par rapport à ta problèmatique le projet Opendbdiff dont je parlais dans un post précédent est opensource et son but est de comparer deux bases de données et de générer le script pour passer de l'une à l'autre. Tu peux donc soit t'inspirer de son code ou carrément l'utiliser.
    Je vais jeter un coup d'oeil. Mais résout-il le problème de dépendances des objets auquel nous sommes confrontés ?

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    J'utilise un fichier parce que du coup je maitrise l'ordre et je peux le remplir au fur et à mesure que j'écris les objets.
    Pour OpenDBDiff c'est un collègue qui l'utilise et pas moi, donc je n'ai pas la réponse à ta question. Le dit collègue étant en congé je ne peux pas lui poser la question.
    A+
    Soazig

Discussions similaires

  1. [SQL SERVER 2005][Database Engine] Migration des connexions
    Par 33Romain dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/04/2008, 09h24
  2. Réponses: 3
    Dernier message: 10/01/2008, 16h28
  3. Réponses: 2
    Dernier message: 26/07/2007, 08h35
  4. [SQL Server 2005] Changer l'emplacement des bases
    Par Leparachute dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/06/2007, 15h26
  5. [Sql Server 2005] Question a propos des champs unicode
    Par siaoly dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/06/2006, 15h00

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