c# - Create Script Component as Source Programmatically -



c# - Create Script Component as Source Programmatically -

i working on programmatically creating bundle info flow task containing script component source. have been able create package, info flow task, , add together script component. however, script component appears default transform.

does know how souce?

here class single method i'm working on:

using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks; using dynamicpackagecreator.models; using microsoft.sqlserver.dts.runtime; using system.io; using microsoft.sqlserver.dts.pipeline.wrapper; // alias prevent ambiguity using dtscolumndatatype = microsoft.sqlserver.dts.runtime.wrapper.datatype; namespace dynamicpackagecreator { public class dtsclient { public void createpackagewithdataflowandscriptsource(string filepath, string dataflowname, string sourcename, list<outputdefinition> outputdefinitions) { // create bundle bundle pkg = new package(); pkg.name = path.getfilenamewithoutextension(filepath); // create dataflow task executable e = pkg.executables.add("stock:pipelinetask"); taskhost thmainpipe = e taskhost; thmainpipe.name = dataflowname; mainpipe dataflowtask = thmainpipe.innerobject mainpipe; // create source component idtscomponentmetadata100 sourcecomponent = dataflowtask.componentmetadatacollection.new(); sourcecomponent.name = sourcename; sourcecomponent.componentclassid = ssiscomponenttype.scriptcomponent.getcomponentclassid(); // design time srcdesigntime of component cmanagedcomponentwrapper srcdesigntime = sourcecomponent.instantiate(); // initialize component srcdesigntime.providecomponentproperties(); int lastoutputid = 0; // add together metadata foreach (var outputdefinition in outputdefinitions) { var output = srcdesigntime.insertoutput(dtsinsertplacement.ip_after, lastoutputid); output.name = outputdefinition.outputname; lastoutputid = output.id; var outputcolumncollection = output.outputcolumncollection; foreach (var outputcolumndefinition in outputdefinition.outputcolumndefinitions) { var outputcolumn = outputcolumncollection.new(); outputcolumn.name = outputcolumndefinition.columnname; outputcolumn.setdatatypeproperties(dtscolumndatatype.dt_wstr, outputcolumndefinition.columnsize, 0, 0, 0); } } // reinitialise metadata srcdesigntime.reinitializemetadata(); // save bundle application app = new application(); app.savetoxml(filepath, pkg, null); } } }

the outputdefinition class custom class created holding definitions used when creating outputs.

so, solution issue remove inputs component. default component has "input 0" , "output 0" correlates beingness transform script component type. source type have no inputs, , destination have no outputs.

to remove inputs , outputs, add:

sourcecomponent.outputcollection.removeall(); sourcecomponent.inputcollection.removeall();

here:

// ... // initialize component srcdesigntime.providecomponentproperties(); // remove default inputs , outputs sourcecomponent.outputcollection.removeall(); sourcecomponent.inputcollection.removeall(); int lastoutputid = 0; // ...

c# ssis

Comments

Popular posts from this blog

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -