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 :

[sql2005] Composant Script et PostExecute


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [sql2005] Composant Script et PostExecute
    Bonjours,

    Mon objectif est de faire une tache qui va prendre dans une base de donnée des informations de configuration et les mettre dans un variable.
    pour se faire j'utilise l'objet "Source OLE DB" lier à un "Composant Script".
    Je passe en paramètre ReadWriteVariables mes 2 variable Max,Min.

    Mon code est simplet et ne fait qu'affectés mes 2 variables.

    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
    Imports System
    Imports System.Data
    Imports System.Math
    Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
    Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
     
    Public Class ScriptMain
        Inherits UserComponent
     
        Public Overrides Sub Entrée0_ProcessInputRow(ByVal Row As Entrée0Buffer)
            Me.ReadWriteVariables("Min").Value = Row.DifferenceDateMax
            Me.ReadWriteVariables("Max").Value = Row.DifferenceDateMin
        End Sub
     
    End Class
    Mais quand j'execute mon code dans mes fichier de lof j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Microsoft.SqlServer.Dts.Pipeline.ReadWriteVariablesNotAvailableException: La collection de variables verrouillée pour l'accès en lecture et écriture n'est pas disponible en dehors de PostExecute.
       à Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)
       à Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer buffer)
       à Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper90 wrapper, Int32 inputID, IDTSBuffer90 pDTSBuffer, IntPtr bufferWirePacket)
    je ne voie pas vraiment quoi faire.

    Merci de l'aide qui sera apporté.

  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
    Et avec Dts.Variables(...) ?

  3. #3
    Membre du Club

    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 46
    Points
    46
    Par défaut
    essai avec :

    Dts.Variables("Min").Value = ...
    Dts.Variables("Max").Value = ...

    (ajouter Imports Microsoft.SqlServer.Dts.Runtime)

  4. #4
    Membre à l'essai
    Profil pro
    Consultant IT
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    j'ai le même problème que toi.

    l'objet Dts n'est pas accessible car il s'agit d'une tâche "Script personnalisé".

    Si quelqu'un a une idée du problème, ce serait gentil de nous aider

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    alors par rapport au dts j'avais déjà essayé mais il me retourne une erreur.
    Le nom 'DTS' n'est pas déclaré

    Il me semble avoir trouvé une solution.
    enfaite la visibilité des variables dans un composant script n'est possible que dans la fonction postExecute (). il est peut-être possible de les utiliser dans une préExecute() mais je n'ai pas testé.
    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
     
    Public Class ScriptMain
        Inherits UserComponent
        Dim Eloigne As Integer
        Dim Proche As Integer
        Public Overrides Sub Entrée0_ProcessInputRow(ByVal Row As Entrée0Buffer)
            Eloigne = Row.DateEloigne
            Proche = Row.DateProche
     
        End Sub
     
        Public Overrides Sub PostExecute()
            Me.Variables.Eloigne = Eloigne
            Me.Variables.Proche = Proche
        End Sub
    End Class

Discussions similaires

  1. [SSIS] [2K8] PROBLEME COMPOSANT SCRIPT
    Par LauraBios dans le forum SSIS
    Réponses: 3
    Dernier message: 22/07/2010, 14h31
  2. [SSIS][2k5]Programmer un Composant Script
    Par bemar dans le forum SSIS
    Réponses: 4
    Dernier message: 25/01/2008, 16h04
  3. [INTERBASE] Composant script pour Interbase
    Par Papino dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/12/2006, 09h38
  4. composant script
    Par CharleLéo dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 05/11/2004, 17h42
  5. composant script
    Par CharleLéo dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/11/2004, 09h31

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