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 2000][DTS][NET 1.1] Exécution d'un package DTS


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [SQL Server 2000][DTS][NET 1.1] Exécution d'un package DTS
    Bonjour,

    Je souhaite effectuer le transfert de données d'une base MSDE vers une server MSSQL. Après avoir développé une DLL qui effectuait une "copie" des données (requête SELECT sur la base MSDE, requête INSERT sur la base MSSQL), j'ai constaté de gros problème de performance (j'ai plusieurs miliers de lignes à transférer).
    En creusant un peu (je suis loin d'être un expert MSSQL), j'ai trouvé le module DTS qui pourrait répondre à mon besoin. J'ai créé un package DTS qui utilise 2 connections (source et destination) et effectue un import des tables (une tâche par table à transférer) en utilisant une requête SQL pour la source des données. J'utilise des variables globales pour filter mes données à transférer.

    J'essai maintenant de développer une libraire en .NET qui utilise ce package sous forme de fichier .dts. A partir de VisualStudio 2003, je réfèrence les DLLs suivantes:
    • dtspkg.dll
      dtspump.dll
      custtask.dll

    J'arrive à ouvrir le fichier .dts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Package2Class pkg = new Package2Class();
    Object pVarPersistStgOfHost = null;
    pkg.LoadFromStorageFile(
              @"CopyData.dts",
              null,
              null,
              null,
              "CopyData",
              ref pVarPersistStgOfHost);
    mais lorsque je tente d'obtenir une réfèrence sur une tâche de transfert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg.Tasks.Item("DTSTask_DTSDataPumpTask_1").CustomTask
    j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Échec de QueryInterface pour l'interface DTS.CustomTask.
    Quelqu'un a-t-il une idée?

  2. #2
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    en lisant ton problème, j'ai eu une idée qui me semble plus simple : gérer tout avec SQL !!

    tu te connecte à ta base MSDE
    tu lances un BACKUP (un ExecuteNonQuery) (je te laisse découvrir les paramètres dans l'aide)
    bien sûr ta sauvegarde tu la met quelque part
    tu te connectes sur SQL Server (le nouveau serveur)
    tu lance un RESTORE (idem un executeNonQuery) (idem regarde l'aide pour la commande RESTORE)
    le tout se fera en quelques minutes (je suis pésimiste)

    Une fois terminé, tu peux supprimer par exemple les tables en plus (avec la commande DROP et les ExecutesNonQuery) ...

    je pense que c'est plus simple que DTS, les divers DLL ...

    Bon courage !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je ne souhaite pas faire un backup complet de ma base... je souhaite transférer des données filtrées (SELECT * FROM * WHERE x = y), d'un ensemble de tables, pas de toutes les tables.

    Apparemment, BACKUP sert pour une database complete, ou d'un fichier de database... pas d'un sous-ensemble?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Petit avancement dans mes tests:
    J'ai modifié mon package DTS pour effectuer le transfert en fonction d'un select, mais sans utiliser de variables globales (les paramètres de filtrage de mes lignes sont en dur dans le package DTS).
    L'exécution de ce package se déroule très bien... aucune erreur...

    Par contre, si je tente d'introduire des variables globales dans mon filtrage, que je modifie à partir de mon code C#, ça ne fonctionne pas (aucune erreur d'exécution de mon code, mais erreur d'exécution des tâches DTS). La méthode DTS.Step.GetExecutionErrorInfo() me retourne les informations suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pErrorCode = -2147024809
    pbstrSource = Microsoft Data Transformation Services (DTS) P
    ackage
    pbstrDescription = Paramètre incorrect.
    Quelqu'un a une idée?

Discussions similaires

  1. [VB.NET][SQL Server 2000] Erreur de connexion
    Par TheBlue dans le forum Accès aux données
    Réponses: 9
    Dernier message: 09/07/2007, 10h04
  2. Problème DTS SQL Server 2000 -> Oracle
    Par SetaSensei dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/11/2006, 16h16
  3. DTS sql server 2000
    Par mony1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/08/2006, 12h09
  4. ms sql server 2000 : ".exe" qui ne s'exécute pas
    Par nyko_kliko dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/08/2006, 16h15
  5. Réponses: 10
    Dernier message: 04/04/2006, 01h21

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