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 Serveur 2005 Comment faire le script d'une base pour un UPDATE


Sujet :

MS SQL Server

  1. #1
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    644
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 644
    Points : 254
    Points
    254
    Par défaut SQL Serveur 2005 Comment faire le script d'une base pour un UPDATE
    BOnjour,

    J'ai un petit souci de répercussion de mes modifications dans une base.
    J'ai 2 bases identiques sur 2 serveurs.
    Si je fais une modification d'une table dans une de mes bases, je voudrai générer le script de la modification pour l'executer sur la 2e base.
    Or je n 'ai pas accés dans ma base modifiée à "Générer un script de la base de données en tant que...">"ALTER TO".
    De meme qd je suis au niveau de ma table modifiée je n'ai pas acces à "ALTER TO".
    Comment puis je faire?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut redgates.
    tu connais les outils redgates.

    http://www.red-gate.com/products/SQL_Compare/index.htm

    tu peux essayer la version d'essai ou acheter le produit si tu as en as un usage frequent.

    cet outils compare les deux différences entre deux bases et reporte les modifications de l'une sur l'autre.

  3. #3
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    644
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 644
    Points : 254
    Points
    254
    Par défaut
    merci...
    Y a aucun autre moyen de faire ca?Il faut absolument un outil payant c'est mon chef qui ne va pas etre heureux...

  4. #4
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 213
    Points
    213
    Par défaut
    c'est pas trop dur a faire,

    je pense en écrire un prochainement mais me faut le temp et l'accord de mon patron.

    Il suffit pour chaque table de lire sa structure, vérifier celle de l'autre base si c'est différent, sp_rename -> create table -> insert * from old,null,.... si c'est non null faut récup la valeur par défaut
    Fabian M. - DBA Sql server 2008R2.
    Apprenti Admin Système 2008 R2
    Développeur SSRS, SQL
    Développement C# en hobby

  5. #5
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    644
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 644
    Points : 254
    Points
    254
    Par défaut
    moi, ca ne me parait pas si simple que ca...
    Rien que pour la comparaison des 2 tables ca me parait chaud.

  6. #6
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 213
    Points
    213
    Par défaut
    On va supposer que la table1 existe dans les 2 bases de donnée (d'abord vérifier les tables avec la requète si dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select * 
    from srv2.table2.information_schema.columns as d1
    where table_name = 'table1'
    and not exists(select * from srv.table.information_schema.columns as d2 
    where d1.table_name = d2.table_name 
    and d1.column_name = d2.column_name 
    and isnull(d1.column_default,'') = isnull(d2.column_default,'')
    and d1.is_nullable = d2.is_nullable 
    and d1.data_type = d2.data_type 
    and isnull(d1.character_maximum_length,0) = isnull(d2.character_maximum_length,0))
    on peut compléter évidement la liste des and, celle ci est exhaustive, ensuite nous avons les champs soit manquant soit qui ont changé de type.

    Reste a traiter.

    Donc pour cela moi je les ajouterai dans une table temporaire ou ensuite j'irai pecher pour construire mes create table, insert
    Fabian M. - DBA Sql server 2008R2.
    Apprenti Admin Système 2008 R2
    Développeur SSRS, SQL
    Développement C# en hobby

  7. #7
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 213
    Points
    213
    Par défaut
    Voilà un peu plus complet, bon ça reste toujours a compléter sur la liste du select, a optimiser, j'ai une union de trop mais j'ai fini mon temps de midi donc pas le temps de transformer en left join.
    J'ai un peu optimisé également ça renvoit toutes les columns de toute les tables existantes.

    Pour vérifier les tables ajouté c'est le même genre de requète mais avec information_schema.tables

    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
    select table_name, column_name, 'Modifiee' 
    from information_schema.columns as d1
    where not exists(select * from synerglass.information_schema.columns as d2 
    where d1.table_name = d2.table_name 
    and d1.column_name = d2.column_name
    and isnull(d1.column_default,'') = isnull(d2.column_default,'')
    and d1.is_nullable = d2.is_nullable 
    and d1.data_type = d2.data_type 
    and isnull(d1.character_maximum_length,0) = isnull(d2.character_maximum_length,0))
    and exists(select * from synerglass.information_schema.columns as d2 
    where d1.table_name = d2.table_name 
    and d1.column_name = d2.column_name )
    union all
    select table_name, column_name, 'Ajoutée' 
    from information_schema.columns as d1
    where not exists(select * from synerglass.information_schema.columns as d2 
    where d1.table_name = d2.table_name 
    and d1.column_name = d2.column_name)
    union all
    select table_name, column_name, 'Supprimée' 
    from synerglass.information_schema.columns as d1
    where not exists(select * from information_schema.columns as d2 
    where d1.table_name = d2.table_name 
    and d1.column_name = d2.column_name)
    Editée, il manquait le début de la requète
    Fabian M. - DBA Sql server 2008R2.
    Apprenti Admin Système 2008 R2
    Développeur SSRS, SQL
    Développement C# en hobby

  8. #8
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    644
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 644
    Points : 254
    Points
    254
    Par défaut
    wahou...
    C'est bien ce qui me semblait que c'etait pas aussi simple
    Je te remercie de ton interet pour moi.
    Je vais voir si transposable dans mon cas...
    Merci!!

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 265
    Points : 314
    Points
    314
    Par défaut
    Je n'ai pas trop suivi le post mais il y a aussi un outil chez MS qui s'appelle tablediff.
    http://msdn2.microsoft.com/en-us/library/ms162843.aspx

    A voir si ça peut te convenir.

Discussions similaires

  1. Réponses: 15
    Dernier message: 07/11/2007, 14h08
  2. Réponses: 3
    Dernier message: 03/10/2007, 00h59
  3. [SQL SERVEUR 2005] comment MAJ la structure de mes tables?
    Par unix27 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/11/2006, 22h06
  4. [Sql server 2005] Comment faire des taches planifiées?
    Par critok dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/05/2006, 12h19

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