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 :

Réplication de Lot DTS dans SQL SERVER


Sujet :

Réplications SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Réplication de Lot DTS dans SQL SERVER
    Bonjour ,

    Nous avons créé un grand nombre de lot DTS dans SQL SERVER 2000 sous un environnement de DEV pour les besoins d'une application et nous cherchons à les recopier sur notre serveur de prod.

    Ma question est donc la suivante :

    Existe t'il une fonctionnalité SQL server ou un outil permettant de dupliquer des lots d'un server vers un autre ?
    Sachant que la génération de script est possible pour les bases de données, les tables, les procédures stockées etc ...

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Tu peux par exemple tous les ouvrir et les resauver sur l'autre serveur. Ou tu peux apparemment copier msdb..sysdtspackages, comme indiqué dans cet article :
    http://www.databasejournal.com/featu...le.php/1461521
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup
    C'est vrai pourquoi faire simple quand on peut faire compliquer.

    Je n'y avais pas pensé, désolé et merci.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    je l'ai essayé et ça marche super bien. J'ai légérement modifié le code pour n'en copier qu'un seul de la sorte:

    SELECT T1.* FROM dbo.sysdtspackages AS T1
    INNER JOIN (
    SELECT [name], [id], MAX([createdate]) AS [createdate]
    FROM dbo.sysdtspackages where T1.[name] = 'nom du lot' GROUP BY [name], [id] ) AS T2
    ON T1.[id] = T2.[id] AND T1.[createdate] = T2.[createdate]
    Et là encore, c'est bon.

    Par contre, je voudrais maintenant passer le nom du lot en paramètre. J'ai essayé ça:

    SELECT T1.* FROM dbo.sysdtspackages AS T1
    INNER JOIN (
    SELECT [name], [id], MAX([createdate]) AS [createdate]
    FROM dbo.sysdtspackages where T1.[name] = ? GROUP BY [name], [id] ) AS T2
    ON T1.[id] = T2.[id] AND T1.[createdate] = T2.[createdate]
    afin de pouvoir affecter une variable globale que je pourrais passer via un /A dans la commande dtsrun .... Mais ça ne marche pas ...
    Quelqu'un aurait une idée ??

  5. #5
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Salut,

    "Ca ne marche pas" est en général pas assez descriptif pour qu'on puisse en faire qqch. Comment exactement cela ne marche pas ?
    Tu as mis ton code dans une tâche "Execute SQL" ? Tu as mappé le paramètre avec la variable globale dans les options de ta tâche ? Ton code SQL est parsé correctement par la tâche ? As-tu essayé d'encapsuler le code dans une procédure stockée pour l'exécuter depuis ta tâche ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    EN fait, j'ai suivi les instructions décrites dans ton lien:

    http://www.databasejournal.com/featu...le.php/1461521

    J'ai donc créé mes deux connections et ma tâche de transformations de données. Dans celle-ci, j'ai choisi "requête SQL" dans laquelle j'ai mis le code ci-dessus.
    En remplaçant le :
    where T1.[name] = 'nom du lot'
    par
    where T1.[name] = ?
    J'ai une erreur de synthaxe quand je clique sur la touche "analyser la requête". Et donc je ne peux pas utiliser les variables globales.
    Je ne sais pas si j'ai été suffisamment clair.

  7. #7
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Ok, j'ai compris. C'est clair.

    Je pense que le parseur SQL du DTS est assez peu intelligent, j'ai déjà eu des problèmes de ce type. Là, comme tu as une sous-requête, il est certainement perdu. La solution la plus simple à mon avis est d'encapsuler le code dans une procédure stockée, et ensuite de faire un appel du genre
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  8. #8
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    Génial ... Ca marche super bien. J'ai créé une procédure dans la base MSDB (y a-t'il un mal à ça d'ailleurs ?) et je l'exécute depuis le lot DTS.
    Mes développeurs n'ont plus besoin d'aller magouiller sur la prod pour leur lots maintenant.
    Nous avons fait un test et c'est OK.
    Merci de votre aide ... Ca fait un moment que je cherchait une solution de ce genre.

  9. #9
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    Toujours dans la même optique ... Quand je transporte mes lots DTS de la recette vers la prod, j'ai un problème avec les chaines de connexion, ainsi que les noms des serveurs qui ne sont pas forcément les mêmes ... La procédure citée plus haut transporte le lot tel quel d'un serveur vers l'autre...
    Y-at'il un moyen de remplacer tout ça par des variables . Qui seraient renseignées par des variables globales ou des fichiers .ini ?

  10. #10
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Oui, tu peux gérer ta chaîne de connexion avec un fichier ini par exemple. Regarde la tâche "Dynamic Properties" (de mémoire) de DTS.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  11. #11
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    Ok, merci rudib ...
    Grâce à tes recos, j'ai trouvé le site suivant si ça interresse quelqu'un:

    http://www.databasejournal.com/featu...le.php/3073161

Discussions similaires

  1. Import Dts dans SQL-Server 2008 R2
    Par laure07 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/11/2012, 13h53
  2. comment récupere lot DTS sous sql server 2000
    Par zaki_1982 dans le forum Outils
    Réponses: 0
    Dernier message: 01/09/2010, 23h44
  3. executer un code dans un lot (DTS) de sql server 2000
    Par zaki_1982 dans le forum Développement
    Réponses: 1
    Dernier message: 30/06/2008, 18h02
  4. [SSIS][2k5]Equivalant DTS dans sql server 2005
    Par imanesl dans le forum SSIS
    Réponses: 1
    Dernier message: 25/03/2008, 11h00
  5. Réplication de Lot DTS dans SQL SERVER
    Par benblood dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 15/09/2006, 12h00

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