Пример #1
0
        public SSISFlatFileDestination(FlatFileDestination fdst, MainPipe pipe, IDTSComponentMetaData100 src, int outputID, ConnectionManager cm)
            : base(pipe, "Flat File Destination", outputID)
        {
            cm.Name = String.Format(CultureInfo.InvariantCulture, "FlatFile Destination Connection Manager {0}", outputID);

            //Create a new FlatFileDestination component

            IDTSComponentMetaData100 comp  = this.MetadataCollection;
            CManagedComponentWrapper dcomp = comp.Instantiate();

            foreach (KeyValuePair <string, object> prop in fdst.CustomProperties.CustomPropertyCollection.InnerArrayList)
            {
                dcomp.SetComponentProperty(prop.Key, prop.Value);
            }

            /*Specify the connection manager for Src.The Connections class is a collection of the connection managers that have been added to that package and are available for use at run time*/
            if (comp.RuntimeConnectionCollection.Count > 0)
            {
                comp.RuntimeConnectionCollection[0].ConnectionManagerID = cm.ID;
                comp.RuntimeConnectionCollection[0].ConnectionManager   = DtsConvert.GetExtendedInterface(cm);
            }

            this.Reinitialize(dcomp);

            //Create datatype converter if needed
            Dictionary <string, int> converted = new Dictionary <string, int>();
            IDTSVirtualInput100      vInput    = src.InputCollection[0].GetVirtualInput();

            if (this.needDataTypeChange(vInput, comp.InputCollection[0]))
            {
                //create the destination column collection
                Dictionary <string, MyColumn> exColumns = new Dictionary <string, MyColumn>();
                foreach (IDTSExternalMetadataColumn100 exColumn in comp.InputCollection[0].ExternalMetadataColumnCollection)
                {
                    MyColumn col = new MyColumn();
                    col.Name      = exColumn.Name;
                    col.DataType  = exColumn.DataType;
                    col.Length    = exColumn.Length;
                    col.Precision = exColumn.Precision;
                    col.Scale     = exColumn.Scale;
                    col.CodePage  = exColumn.CodePage;
                    exColumns.Add(exColumn.Name, col);
                }
                SSISDataConverter ssisdc = new SSISDataConverter(pipe, src, outputID, exColumns);
                src       = ssisdc.MetadataCollection;
                converted = ssisdc.ConvertedColumns;
                outputID  = 0;
            }

            this.ConnectComponents(src, outputID);
            this.MatchInputColumns(converted, false);
        }
        public SSISSharePointDestination(SharePointDestination spdst, MainPipe pipe, IDTSComponentMetaData100 src, int outputID)
            : base(pipe, "SharePoint List Destination", outputID, "Microsoft.Samples.SqlServer.SSIS.SharePointListAdapters.SharePointListDestination, SharePointListAdapters, Version=1.2016.0.0, Culture=neutral, PublicKeyToken=f4b3011e1ece9d47")
        {
            //Create a new SharePointDestination component

            IDTSComponentMetaData100 comp  = this.MetadataCollection;
            CManagedComponentWrapper dcomp = comp.Instantiate();

            foreach (KeyValuePair <string, object> prop in spdst.CustomProperties.CustomPropertyCollection.InnerArrayList)
            {
                dcomp.SetComponentProperty(prop.Key, prop.Value);
            }

            this.Reinitialize(dcomp);

            //Create datatype converter if needed
            Dictionary <string, int> converted = new Dictionary <string, int>();
            IDTSVirtualInput100      vInput    = src.InputCollection[0].GetVirtualInput();

            if (this.needDataTypeChange(vInput, comp.InputCollection[0]))
            {
                //create the destination column collection
                Dictionary <string, MyColumn> exColumns = new Dictionary <string, MyColumn>();
                foreach (IDTSExternalMetadataColumn100 exColumn in comp.InputCollection[0].ExternalMetadataColumnCollection)
                {
                    MyColumn col = new MyColumn();
                    col.Name      = exColumn.Name;
                    col.DataType  = exColumn.DataType;
                    col.Length    = exColumn.Length;
                    col.Precision = exColumn.Precision;
                    col.Scale     = exColumn.Scale;
                    col.CodePage  = exColumn.CodePage;
                    exColumns.Add(exColumn.Name, col);
                }
                SSISDataConverter ssisdc = new SSISDataConverter(pipe, src, outputID, exColumns);
                src       = ssisdc.MetadataCollection;
                converted = ssisdc.ConvertedColumns;
                outputID  = 0;
            }

            this.ConnectComponents(src, outputID);
            this.MatchInputColumns(converted, false);
        }
Пример #3
0
        private Dictionary <string, MyColumn> getColumnCollectionFromPipe(IDTSComponentMetaData100 comp)
        {
            IDTSVirtualInput100           vinput        = comp.InputCollection[0].GetVirtualInput();
            Dictionary <string, MyColumn> colCollection = null;

            if (vinput.VirtualInputColumnCollection.Count > 0)
            {
                //define input column
                colCollection = new Dictionary <string, MyColumn>();
                foreach (IDTSVirtualInputColumn100 vCol in vinput.VirtualInputColumnCollection)
                {
                    MyColumn col = new MyColumn();
                    col.Name      = vCol.Name;
                    col.DataType  = vCol.DataType;
                    col.Length    = vCol.Length;
                    col.Precision = vCol.Precision;
                    col.Scale     = vCol.Scale;
                    colCollection.Add(col.Name, col);
                }
            }
            return(colCollection);
        }
Пример #4
0
        private bool CreateColumnCollection()
        {
            foreach (DataColumn column in this.dsvtable.Columns)
            {
                MyColumn myCol = new MyColumn();
                myCol.Name = column.ColumnName;
                string exDataType = (column.ExtendedProperties["ExtendedDataType"] == null)? String.Empty : column.ExtendedProperties["ExtendedDataType"].ToString();
                switch (exDataType)
                {
                case ("String"):
                case ("NChar"):
                case ("NVarChar"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_WSTR;
                    myCol.Length   = (column.ExtendedProperties["DataSize"] == null) ? column.MaxLength : Convert.ToInt32(column.ExtendedProperties["DataSize"], CultureInfo.InvariantCulture);
                    myCol.CodePage = 1252;
                    break;

                case ("Char"):
                case ("VarChar"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR;
                    myCol.Length   = (column.ExtendedProperties["DataSize"] == null) ? column.MaxLength : Convert.ToInt32(column.ExtendedProperties["DataSize"], CultureInfo.InvariantCulture);
                    myCol.CodePage = 1252;
                    break;

                case ("SByte"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I1;
                    break;

                case ("TinyInt"):
                case ("Byte"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_UI1;
                    break;

                case ("SmallInt"):
                case ("Int16"):
                case ("Short"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I2;
                    break;

                case ("Int"):
                case ("Integer"):
                case ("Int32"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I4;
                    break;

                case ("BigInt"):
                case ("Int64"):
                case ("Long"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I8;
                    break;

                case ("UInt16"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_UI2;
                    break;

                case ("UInt32"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_UI4;
                    break;

                case ("UInt64"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_UI8;
                    break;

                case ("VarBinary"):
                case ("Binary"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BYTES;
                    myCol.Length   = (column.ExtendedProperties["DataSize"] == null) ? column.MaxLength : Convert.ToInt32(column.ExtendedProperties["DataSize"], CultureInfo.InvariantCulture);
                    break;

                case ("Bit"):
                case ("Boolean"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BOOL;
                    break;

                case ("DateTime"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_DBTIMESTAMP;
                    break;

                case ("DBTime"):
                case ("Time"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_DBTIME;
                    break;

                case ("DBDate"):
                case ("Date"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_DBDATE;
                    break;

                case ("Decimal"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_DECIMAL;
                    break;

                case ("Numeric"):
                    myCol.DataType  = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_NUMERIC;
                    myCol.Precision = (column.ExtendedProperties["Precision"] == null) ? column.MaxLength : Convert.ToInt32(column.ExtendedProperties["Precision"], CultureInfo.InvariantCulture);
                    myCol.Scale     = (column.ExtendedProperties["Scale"] == null) ? 0 : Convert.ToInt32(column.ExtendedProperties["Scale"], CultureInfo.InvariantCulture);
                    break;

                case ("Money"):
                case ("Currency"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_CY;
                    break;

                case ("Float"):
                case ("Double"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_R8;
                    break;

                case ("Real"):
                case ("Single"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_R4;
                    break;

                case ("Guid"):
                    myCol.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_GUID;
                    break;

                default:
                    return(false);
                }
                m_columns.Add(myCol.Name, myCol);
            }
            return(true);
        }
        public SSISAdoNetDestination(AdoNetDestination dbdst, MainPipe pipe, IDTSComponentMetaData100 src, int outputID, ConnectionManager cm)
            : base(pipe, "ADO NET Destination", outputID)
        {
            //create Ado Net destination component
            //set connection properties
            cm.Name             = String.Format(CultureInfo.InvariantCulture, "AdoNet Destination Connection Manager {0}", outputID);
            cm.ConnectionString = dbdst.ConnectionString;
            cm.Description      = dbdst.Description;
            cm.Qualifier        = dbdst.DBConnection.Qualifier;

            IDTSComponentMetaData100 comp  = this.MetadataCollection;
            CManagedComponentWrapper dcomp = comp.Instantiate();

            // Set AdoNet destination custom properties
            foreach (KeyValuePair <string, object> prop in dbdst.CustomProperties.CustomPropertyCollection.InnerArrayList)
            {
                dcomp.SetComponentProperty(prop.Key, prop.Value);
            }

            //default - OpenRowset; ovveride OpenRowset with stagingtablename if staging is used
            if (!(dbdst.StagingBlock == null) && dbdst.StagingBlock.Staging)
            {
                dcomp.SetComponentProperty("TableOrViewName", dbdst.StagingBlock.StagingTableName);
            }
            else
            {
                dcomp.SetComponentProperty("TableOrViewName", dbdst.CustomProperties.TableOrViewName);
            }

            if (comp.RuntimeConnectionCollection.Count > 0)
            {
                comp.RuntimeConnectionCollection[0].ConnectionManagerID = cm.ID;
                comp.RuntimeConnectionCollection[0].ConnectionManager   = DtsConvert.GetExtendedInterface(cm);
            }

            this.Reinitialize(dcomp);

            //Create datatype converter if needed
            Dictionary <string, int> converted = new Dictionary <string, int>();
            IDTSVirtualInput100      vInput    = src.InputCollection[0].GetVirtualInput();

            if (this.needDataTypeChange(vInput, comp.InputCollection[0]))
            {
                //create the destination column collection
                Dictionary <string, MyColumn> exColumns = new Dictionary <string, MyColumn>();
                foreach (IDTSExternalMetadataColumn100 exColumn in comp.InputCollection[0].ExternalMetadataColumnCollection)
                {
                    MyColumn col = new MyColumn();
                    col.Name      = exColumn.Name;
                    col.DataType  = exColumn.DataType;
                    col.Length    = exColumn.Length;
                    col.Precision = exColumn.Precision;
                    col.Scale     = exColumn.Scale;
                    col.CodePage  = exColumn.CodePage;
                    exColumns.Add(exColumn.Name, col);
                }
                SSISDataConverter ssisdc = new SSISDataConverter(pipe, src, outputID, exColumns);
                src       = ssisdc.MetadataCollection;
                converted = ssisdc.ConvertedColumns;
                outputID  = 0;
            }

            this.ConnectComponents(src, outputID);
            this.MatchInputColumns(converted, true);
        }
        public SSISExcelDestination(ExcelDestination dbdst, MainPipe pipe, IDTSComponentMetaData100 src, int outputID, ConnectionManager cm)
            : base(pipe, "Excel Destination", outputID)
        {
            //create ole db destination component
            //set connection properties
            cm.Name             = String.Format(CultureInfo.InvariantCulture, "Excel Destination Connection Manager {0}", outputID);
            cm.ConnectionString = dbdst.ConnectionString;
            cm.Description      = dbdst.Description;


            //mwrt.IDTSConnectionManagerExcel100 ecm = cm.InnerObject as mwrt.IDTSConnectionManagerExcel100;
            //ecm.ExcelFilePath = dbdst.FilePath;
            //ecm.FirstRowHasColumnName = dbdst.Header;
            //ecm.ExcelVersionNumber = mwrt.DTSExcelVersion.DTSExcelVer_2007;


            IDTSComponentMetaData100 comp  = this.MetadataCollection;
            CManagedComponentWrapper dcomp = comp.Instantiate();

            // Set oledb destination custom properties
            //default to openrowset
            dcomp.SetComponentProperty("AccessMode", 0);
            //foreach (KeyValuePair<string, object> prop in dbdst.CustomProperties.CustomPropertyCollection.InnerArrayList)
            foreach (KeyValuePair <string, object> prop in dbdst.CustomProperties.CustomPropertyCollection.InnerArrayList)
            {
                dcomp.SetComponentProperty(prop.Key, prop.Value);
            }

            if (comp.RuntimeConnectionCollection.Count > 0)
            {
                comp.RuntimeConnectionCollection[0].ConnectionManagerID = cm.ID;
                comp.RuntimeConnectionCollection[0].ConnectionManager   = DtsConvert.GetExtendedInterface(cm);
            }

            this.Reinitialize(dcomp);

            //Create datatype converter if needed
            Dictionary <string, int> converted = new Dictionary <string, int>();
            IDTSVirtualInput100      vInput    = src.InputCollection[0].GetVirtualInput();

            if (this.needDataTypeChange(vInput, comp.InputCollection[0]))
            {
                //create the destination column collection
                Dictionary <string, MyColumn> exColumns = new Dictionary <string, MyColumn>();
                foreach (IDTSExternalMetadataColumn100 exColumn in comp.InputCollection[0].ExternalMetadataColumnCollection)
                {
                    MyColumn col = new MyColumn();
                    col.Name      = exColumn.Name;
                    col.DataType  = exColumn.DataType;
                    col.Length    = exColumn.Length;
                    col.Precision = exColumn.Precision;
                    col.Scale     = exColumn.Scale;
                    col.CodePage  = exColumn.CodePage;
                    exColumns.Add(exColumn.Name, col);
                }
                SSISDataConverter ssisdc = new SSISDataConverter(pipe, src, outputID, exColumns);
                src       = ssisdc.MetadataCollection;
                converted = ssisdc.ConvertedColumns;
                outputID  = 0;
            }

            this.ConnectComponents(src, outputID);
            this.MatchInputColumns(converted, true);
        }