2012-07-16 3 views
0

J'essaie d'implémenter un composant de flux de données personnalisé dans mon code managé. Voici mon composant personnalisé de flux de données:Erreur de SSIS du composant de pipeline personnalisé: HREF 0xC0048021

[DtsPipelineComponent(DisplayName = "RenameComponent", ComponentType = ComponentType.Transform)] 
public class MapperComponent : PipelineComponent 
{ 
    List<IDTSVirtualInputColumn100> dontMapList; 

    public override void ProvideComponentProperties() 
    { 
     base.ProvideComponentProperties(); 

     base.RemoveAllInputsOutputsAndCustomProperties(); 
     IDTSInput100 input = ComponentMetaData.InputCollection.New(); 
     input.Name = "Input"; 

     IDTSOutput100 output = ComponentMetaData.OutputCollection.New(); 
     output.Name = "Output"; 
     output.SynchronousInputID = input.ID; 

     // Make the output asynchronous 
     output.SynchronousInputID = 0; 
     FindOldColumns(input); 
    } 
} 

je compile que, inscrivez-vous avec le gac, et enregistrez-le dans le répertoire C: \ Program Files \ Microsoft SQL Server \ 100 \ DTS \ répertoire PipelineComponents.

Je lance alors le code suivant pour ajouter le composant à ma tâche de flux de données:

private static IDTSComponentMetaData100 CreateRenameTransformation(MainPipe dataFlow, Train train) 
    { 
     IDTSComponentMetaData100 renameTransformation = dataFlow.ComponentMetaDataCollection.New(); 

     // Set stock properties 
     renameTransformation.ComponentClassID = "Dexter.CustomComponents.MapperComponent"; 
     renameTransformation.Name = "RenameTransformation"; 
     renameTransformation.Description = "Rename and remove incompatible columns"; 

     CManagedComponentWrapper instance = renameTransformation.Instantiate(); 
     instance.ProvideComponentProperties(); 

     return renameTransformation as IDTSComponentMetaData100; 
    } 

Au cours de l'exécution (lorsque je tente de créer le pacakge), je reçois l'erreur suivante: 0xC0048021 -1073446879 DTS_E_ERRORCOMPONENT Le composant est manquant, non enregistré, non évolutif ou manque d'interfaces requises. Les informations de contact pour ce composant sont "% 1".

Merci,

+0

Aussi fyi, quand je lis tout le PipelineComponentInfos componentInfos = application.PipelineComponentInfos; Les noms de création de composants, Dexter.CustomComponents.MapperComponent sont enregistrés. – doug

+0

Juste pour vérifier, je comprends ce que vous faites. Vous avez créé un composant de flux de données personnalisé, enregistré et installé. Vous tentez * d'utiliser * le composant en créant un package via le modèle d'objet SSIS et * c'est * lorsqu'il échoue? Que faire si vous utilisez BIDS pour effectuer les mêmes tâches? – billinkc

+0

Comment se fait-il que vous n'ayez pas ajouté le composant à BIDS? Je pense que vous devrez ajouter le composant à BIDS afin de l'utiliser dans le paquet. – rvphx

Répondre

1

j'avais fait face au même problème "Code d'erreur: 0xC0048021" et a résolu le problème. Ce problème s'est produit en raison du composant de script ajouté dans la tâche de flux de données.

J'ai installé cette version de SSDT d'ici https://msdn.microsoft.com/en-us/mt429383

Puis, dans l'explorateur de solution SSDT cliquez droit sur le projet, allez dans les propriétés -> Propriétés de configuration -> TargetServerVersion = SQL SERVER 2014

puis, dans l'explorateur de solution SSDT cliquez droit sur le projet, allez dans Propriétés -> Propriétés de configuration -> Debugging -> Run64BitRuntime = False

en se référant à ce lien http://blogs.msdn.com/b/ssis/archive/2016/03/03/what-s-new-for-ssis-2016-rc0.aspx

Questions connexes