Si vous avez plusieurs packages DTS que vous souhaitez réécrire pour utiliser SSIS, vous pouvez rencontrer un problème lors de la conversion des tâches de script ActiveX qui exécutent des requêtes paramétrées sur une base de données Oracle. Cependant, il existe une solution qui consiste à utiliser la tâche de flux de données du composant de script dans SSIS.
Le composant de script vous permet d’exécuter du code VB.Net dans votre flux de données. Lorsque vous ajoutez un composant de script à un flux de données, vous avez la possibilité de choisir s’il agira en tant que source, destination ou transformation. Dans ce cas, pour exécuter des requêtes paramétrées sur une base de données Oracle, vous choisiriez Source.
Voici un exemple de conversion d’une tâche de script ActiveX en une source de composant de script dans SSIS:
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
' ÉTAPE 1: ajouter l'importation d'OracleClient
Imports System.Data.OracleClient
Public Class ScriptMain
Inherits UserComponent
' ÉTAPE 2: ajouter des variables
Private connMgr As IDTSConnectionManager90
Private oracleConn As OracleConnection
Private oracleCmd As OracleCommand
Private oracleRdr As OracleDataReader
' ÉTAPE 3: ajouter une substitution pour obtenir la connexion
Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
connMgr = Me.Connections.ORCL
oracleConn = CType(connMgr.AcquireConnection(Transaction), _
OracleConnection)
End Sub
' ÉTAPE 4: ajouter une substitution pour configurer la commande Oracle
Public Overrides Sub PreExecute()
Dim sql As String = "SELECT ENAME, JOB FROM SCOTT.EMP " + _
"WHERE DEPTNO = :DEPT"
oracleCmd = New OracleCommand(sql, oracleConn)
With oracleCmd
.CommandType = CommandType.Text
.Parameters.Add(":DEPT", OracleType.Number)
End With
End Sub
' ÉTAPE 5: ajouter une substitution pour libérer la commande Oracle
Public Overrides Sub PostExecute()
If Not oracleCmd Is Nothing Then
oracleCmd.Dispose()
End If
End Sub
' ÉTAPE 6: ajouter une substitution pour libérer la connexion Oracle
Public Overrides Sub ReleaseConnections()
connMgr.ReleaseConnection(oracleConn)
End Sub
' ÉTAPE 7: ajouter du code pour exécuter la requête et ajouter les résultats
' au flux de données
Public Overrides Sub CreateNewOutputRows()
Dim DEPT As Integer = Me.Variables.vdept
With oracleCmd
.Parameters(":DEPT").Value = DEPT
End With
oracleRdr = oracleCmd.ExecuteReader()
While oracleRdr.Read()
OutputBuffer.AddRow()
OutputBuffer.EmployeeName = oracleRdr.GetString(0)
OutputBuffer.Job = oracleRdr.GetString(1)
End While
OutputBuffer.SetEndOfRowset()
End Sub
End Class
Le code ci-dessus montre les étapes nécessaires pour convertir une tâche de script ActiveX en une source de composant de script dans SSIS:
- ÉTAPE 1: Importez l’espace de noms OracleClient pour référencer les classes sans spécifier le nom complet.
- ÉTAPE 2: Définissez les variables qui seront utilisées dans tout le code.
- ÉTAPE 3: Remplacez la méthode AcquireConnections pour obtenir le gestionnaire de connexion Oracle défini dans le package SSIS.
- ÉTAPE 4: Remplacez la méthode PreExecute pour configurer la commande Oracle, en spécifiant la requête paramétrée.
- ÉTAPE 5: Remplacez la méthode PostExecute pour libérer la commande Oracle.
- ÉTAPE 6: Remplacez la méthode ReleaseConnections pour libérer la connexion Oracle.
- ÉTAPE 7: Ajoutez du code pour exécuter la requête et ajouter les résultats au flux de données.
En suivant ces étapes, vous pouvez convertir avec succès vos tâches de script ActiveX en packages SSIS en utilisant la source de composant de script. Cela vous permet d’exécuter des requêtes paramétrées sur une base de données Oracle dans votre package SSIS.
Il peut y avoir une quantité importante de code, mais la majorité de celui-ci resterait le même pour n’importe quelle requête. Seules les étapes liées à la configuration de la commande Oracle et à l’exécution de la requête devraient être modifiées en fonction de vos besoins spécifiques.
En utilisant la tâche de flux de données du composant de script dans SSIS, vous pouvez facilement convertir vos tâches de script ActiveX et profiter des fonctionnalités de SSIS pour vos besoins d’intégration de données.