Bonjour la communauté,

Je suis newbie dans le BI et SSIS et bien sûr je commence à me confronter à une succession de problemes et d'interrogations. Je me retourne donc vers vous pour trouver un peu d'aide.

J'utilise un "DataFlow" pour alimenter ma table de faits à partir de mes différentes dimensions.

Dans ce "DataFlow" je souhaite à un moment donné executer une procédure stockée afin d'aller chercher une donnée qui ne se trouve pas dans mon "OLE DB Source".

J'essaie actuellement d'utiliser le composant "Script Component" pour executer cette action

Voici mon code:
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
25
26
27
28
29
30
31
32
33
 
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime
 
Public Class ScriptMain
    Inherits UserComponent
 
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
        Dim sqlConn As OleDb.OleDbConnection
        Dim sqlCmd As OleDb.OleDbCommand
        Dim sqlParameter As OleDb.OleDbParameter
 
        sqlConn = New OleDb.OleDbConnection(Me.Connections.ConnectionFact.ConnectionString)
        sqlCmd = New OleDb.OleDbCommand("EXEC pr_getSumEvent " & Row.ProductProductionKey, sqlConn)
        sqlCmd.CommandType = CommandType.StoredProcedure
        sqlConn.Open()
 
        Dim sumEvent As Int32
        Dim reader As OleDb.OleDbDataReader
 
        sumEvent = Convert.ToInt32(sqlCmd.ExecuteScalar())
 
        reader.Close()
        sqlConn.Close()
    End Sub
 
 
End Class
Ma première interrogation:
Dans le "DataFlow" la méthode "Input0_ProcessInputRow" est appelée pour chaque ligne de mon "Ole DB Source" ? Et "Row" me permet de récupérer les valeurs de chaque ligne ? N'est-ce pas ?

Premier problème
Lorsque j'execute mon package j'ai l'erreur suivante:
"Syntax error, permission denied or other nonspecific error"
J'ai l'impression que mon "CommandText" n'est pas bon ?

Ma deuxième interrogation:
Je pense ensuite utiliser mon variable "sumEvent" (résultat de la procédure stockée) pour la stocker dans une variable du package, et ensuite utiliser le composant "Derived Column" pour créer une nouvelle colonne à mon "OLE DB Source" avec cette valeur.
Est-ce une bonne idée ?
Est-il possible de récupérer une variable du package dans le composant "Script Component" ?

Merci par avance de votre aide.

Pierrick