Comparaison de la tâche de script et du composant Script

La tâche de script, disponible dans la fenêtre Flux de contrôle du concepteur Integration Services, et le composant Script, disponible dans la fenêtre Flux de données, ont des fonctions très différentes dans un package Integration Services. La tâche est un outil de flux de contrôle à usage général, alors que le composant sert de source, de transformation ou de destination dans le flux de données. En dépit de leurs rôles différents, la tâche de script et le composant Script présentent toutefois des similarités dans les outils de codage qu'ils utilisent et les objets du package qu'ils mettent à la disposition des développeurs. Comprendre ces ressemblances et ces différences peut vous aider à utiliser la tâche et le composant de manière plus efficace.

Similarités entre la tâche de script et le composant Script

La tâche de script et le composant Script ont en commun les fonctionnalités suivantes.

Fonctionnalité Description
Deux modes au moment du design Dans la tâche et le composant, vous commencez par spécifier des propriétés dans l'éditeur, puis vous basculez vers l'environnement de développement pour écrire du code.
Microsoft Visual Studio Tools for Applications (VSTA) La tâche et le composant utilisent le même environnement de développement intégré VSTA et prennent en charge du code écrit dans Microsoft Visual Basic ou Microsoft Visual C#.
Scripts précompilés À partir de SQL Server 2008 Integration Services (SSIS), tous les scripts sont précompilés. Les versions antérieures permettaient de spécifier si les scripts étaient précompilés.

Le script est précompilé en code binaire, ce qui accélère l'exécution, au détriment d'une augmentation de la taille des packages.
Débogage La tâche et le composant prennent en charge les points d'arrêt et l'exécution pas à pas du code pendant le débogage dans l'environnement de conception. Pour plus d’informations, consultez Codage et débogage de la tâche de script et [Codage et débogage du composant script](.. /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.

Différences entre la tâche de script et le composant Script

La tâche de script et le composant Script présentent les différences importantes suivantes.

Fonctionnalité Tâche de script Composant Script
Flux de contrôle / Flux de données La tâche de script est configurée sous l'onglet Flux de contrôle du concepteur et s'exécute à l'extérieur du flux de données du package. Le composant Script est configuré dans la page Flux de données du concepteur et représente une source, une transformation ou une destination dans la tâche de flux de données.
Objectif Une tâche de script peut exécuter quasiment toutes les tâches à caractère général. Vous devez spécifier si vous souhaitez créer une source, une transformation ou une destination à l'aide du composant Script.
Exécution Une tâche de script exécute du code personnalisé à un point donné du flux de travail du package. Elle ne s'exécute qu'une seule fois, à moins d'être placée dans un conteneur de boucles ou un gestionnaire d'événements. Un composant Script s'exécute également une seule fois, mais il exécute généralement sa routine de traitement principale une fois pour chaque ligne de données dans le flux de données.
Éditeur L’Éditeur de tâche de script comporte trois pages : Général, Script et Expressions. Seules les ReadOnlyVariables propriétés et ReadWriteVariables, et ScriptLanguage affectent directement le code que vous pouvez écrire. L’Éditeur de transformation de script contient quatre pages : Colonnes d’entrée, Entrées et sorties, Script et Gestionnaires de connexions. Les métadonnées et les propriétés que vous configurez dans chacune de ces pages déterminent les membres des classes de base générées automatiquement et utilisés pour le codage.
Interaction avec le package Dans le code écrit pour une tâche de script, la propriété Dts vous permet d'accéder à d'autres fonctionnalités du package. La propriété Dts est membre de la classe ScriptMain. Dans le code du composant Script, des propriétés d'accesseur typées vous permettent d'accéder à certaines fonctionnalités de package, telles que les variables et les gestionnaires de connexions.

La méthode PreExecute ne peut accéder qu'à des variables en lecture seule. La méthode PostExecute peut accéder à des variables en lecture seule et en lecture/écriture.

Pour plus d’informations sur ces méthodes, consultez [Codage et débogage du composant script](.. /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.
Utilisation de variables La tâche de script utilise la Variables propriété de l’objet Dts pour accéder aux variables disponibles via les propriétés et ReadWriteVariables de la ReadOnlyVariables tâche. Par exemple :

[VB]

Dim myVar as String myVar = Dts.Variables("MyStringVariable").Value.ToString



[C#]

string myVar; myVar = Dts.Variables["MyStringVariable"].Value.ToString();
Le composant Script utilise des propriétés d’accesseur typées, de la classe de base générée automatiquement, créées à partir des propriétés ReadOnlyVariables et ReadWriteVariables du composant. Par exemple :

[VB]

Dim myVar as String myVar = Me.Variables.MyStringVariable



[C#]

string myVar; myVar = this.Variables.MyStringVariable;
Utilisation de connexions La tâche de script utilise la propriété Connections de l'objet Dts pour accéder aux gestionnaires de connexions définis dans le package. Par exemple :

[VB]

Dim myFlatFileConnection As String myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)



[C#]

string myFlatFileConnection; myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
Le composant Script utilise des propriétés d'accesseur typées, de la classe de base générée automatiquement, créées à partir de la liste de gestionnaires de connexions entrée par l'utilisateur dans la page Gestionnaires de connexions de l'éditeur. Par exemple :

[VB]

Dim connMgr As IDTSConnectionManager100 connMgr = Me.Connections.MyADONETConnection



[C#]

IDTSConnectionManager100 connMgr; connMgr = this.Connections.MyADONETConnection;
Déclenchement d'événements La tâche de script utilise la propriété Events de l'objet Dts pour déclencher des événements. Par exemple :

[VB]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)



[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
Le composant Script déclenche des erreurs, des avertissements et des messages d'information à l'aide des méthodes de l'interface IDTSComponentMetaData100 retournée par la propriété ComponentMetaData. Par exemple :

[VB]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Journalisation La tâche de script utilise la Log méthode de l’objet Dts pour journaliser les informations des fournisseurs de journaux activés. Par exemple :

[VB]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)



[C#]

byte[] bt = new byte[0]; Dts.Log("Test Log Event", 0, bt);
Le composant Script utilise la méthode Log de la classe de base générée automatiquement pour enregistrer des informations dans des modules fournisseurs d'informations actifs. Par exemple :

[VB]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)



[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
Retour de résultats La tâche de script utilise à la fois la TaskResult propriété et la propriété facultative ExecutionValue de l’objet Dts pour notifier l’exécution de ses résultats. Le composant Script s'exécute dans le cadre de la tâche de flux de données et ne communique pas de résultats à l'aide de l'un ou l'autre de ces propriétés.

Voir aussi

Extension du package à l’aide de la tâche de script
Extension du flux de données avec le composant Script
Utilisation d’une tâche de script dans SQL Server Integration Services SSIS pour se connecter à un service web