2010-10-17 10 views

Répondre

8

Pour ignorer les enregistrements dans un composant de script, vous devez créer le composant de script avec des sorties asynchrones. Par défaut, un composant de script utilise une sortie synchrone, ce qui signifie que chaque ligne entrée dans le script sera également une sortie du script.

Si vous utilisez SQL Server 2005, je pense que vous devrez commencer avec un nouveau composant Script, car vous ne pouvez pas passer de synchrone à asynchrone une fois que vous avez travaillé avec un composant Script. Dans SSIS pour SQL Server 2008, vous pouvez basculer un composant Script de synchrone à asynchrone. Modifiez votre composant Script et sélectionnez l'onglet Entrées et sorties. Sélectionnez le tampon de sortie dans l'arborescence. Sélectionnez la propriété SynchronousInputID et remplacez la valeur par None. Sélectionnez la branche Output Columns dans l'arborescence. Vous devez utiliser le bouton Ajouter une colonne pour créer une colonne pour chaque colonne d'entrée.

Maintenant vous pouvez éditer votre script. Dans la procédure qui traite les lignes, vous allez ajouter du code pour contrôler l'omission et la sortie des lignes. Lorsque vous voulez ignorer une ligne, vous utiliserez la commande Row.NextRow() où Row est le nom du tampon d'entrée. Voici un exemple:

If Row.number = 5 Then 
     Row.NextRow() 
    End If 

Dans cet exemple, les lignes qui ont un 5 dans la colonne numérique seront ignorées. Après l'application de votre autre logique de transformation, vous devez indiquer que la ligne doit aller à la sortie. Ceci est initié avec la commande Output0.AddRow() où Output0 est le nom du tampon de sortie. La fonction AddRow crée le tampon de sortie suivant, qui repousse la ligne précédente du composant Script. Après avoir créé la nouvelle ligne, vous devez affecter des valeurs aux colonnes de la nouvelle ligne.

Output0Buffer.AddRow() 
    Output0Buffer.number = Row.number 

Cet exemple ajoute une nouvelle ligne à la mémoire tampon et affecte la valeur du numéro de la mémoire tampon d'entrée dans la colonne de numéro dans la mémoire tampon de sortie.

+0

J'ai eu cette erreur msg: [Composant Script [74]] Erreur: Microsoft.SqlServer.Dts.Pipeline.RowIndexOutOfRangeException: PipelineBuffer a rencontré une valeur d'index de ligne non valide. à Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException (Exception e) à Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput (Int32 inputID, tampon PipelineBuffer) à Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput (Wrapper IDTSManagedComponentWrapper100, Int32 inputID, IDTSBuffer100 pDTSBuffer, IntPtr bufferWirePacket) – ARZ

+1

le problème était dans mon code! et je l'ai résolu. Merci beaucoup pour votre réponse! – ARZ

Questions connexes