[SSIS][2k5]Programmer un Composant Script
Bonjour à tous,
J'ai un petit soucis concernant la programmation du composant script dans le "flux de données".
Mon projet consiste à programmer un package dit squelette, à partir d'un service windows en vb.net, pour générer un package utilisable dans un contexte donné.
Dans mon package, j'ai une "tâche de flux de données" contenant :
- une source de fichier plat
- un composant de script
- un composant de row count
- une destination oleDb
Lorsque je n'implémente pas de composant de script, je n'ai aucun problème pour la programmation du package, ni l'éxecution des packages générés; par contre, quand je programme mon composant de script pour lui affecter correctement les colonnes d'entrées, de sorties, d'erreurs, ... je perd le script de la classe ScriptMain ...:(
Pour informations complémentaires, voici le code que j'utilise pour programmer ce composant de script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
' 2 Configure the Script component '
Dim componentSyntax As IDTSComponentMetaData90 = dataflowTask.ComponentMetaDataCollection("SyntaxComponent")
Dim wrapperSyntax As CManagedComponentWrapper = componentSyntax.Instantiate()
wrapperSyntax.ProvideComponentProperties()
wrapperSyntax.AcquireConnections(Nothing)
wrapperSyntax.ReinitializeMetaData()
wrapperSyntax.ReleaseConnections()
componentSyntax.Name = "SyntaxComponent"
dataflowTask.PathCollection("Flat File Source Output").AttachPathAndPropagateNotifications(componentSource.OutputCollection(0), componentSyntax.InputCollection(0))
' Map input columns '
Dim input As IDTSInput90 = componentSyntax.InputCollection(0)
Dim externalMetadataColumns As Hashtable = New Hashtable
For Each externalMetadataColumn As IDTSExternalMetadataColumn90 In input.ExternalMetadataColumnCollection
externalMetadataColumns.Add(externalMetadataColumn.Name, externalMetadataColumn)
Next
Dim vInput As IDTSVirtualInput90 = input.GetVirtualInput
' Iterate the inputs of the component '
For Each vColumn As IDTSVirtualInputColumn90 In vInput.VirtualInputColumnCollection
If externalMetadataColumns.Contains(vColumn.Name) Then
Dim vCol As IDTSInputColumn90 = wrapperSyntax.SetUsageType(input.ID, vInput, vColumn.LineageID, DTSUsageType.UT_READWRITE)
If Not vCol Is Nothing And externalMetadataColumns.Contains(vCol.Name) Then
wrapperSyntax.MapInputColumn(input.ID, vCol.ID, input.ExternalMetadataColumnCollection(vColumn.Name).ID)
End If
End If
Next
[.......]
dataflowTask.PathCollection("IsValid").AttachPathAndPropagateNotifications(componentSyntax.OutputCollection(0), componentRowCountOk.InputCollection(0)) |
Ma question est donc de savoir comment ne pas perdre le script de mon composant ... :(
Merci d'avance à tous pour toute réponse ;)
Ben