@@ -848,9 +848,37 @@ public override void ReinitializeMetaData()
848848 {
849849 ConnectionManager cm = Microsoft . SqlServer . Dts . Runtime . DtsConvert . GetWrapper ( ComponentMetaData . RuntimeConnectionCollection [ 0 ] . ConnectionManager ) ;
850850 IDTSConnectionManagerFlatFile100 connectionFlatFile = cm . InnerObject as IDTSConnectionManagerFlatFile100 ;
851+ if ( connectionFlatFile . Columns . Count > passThroughOutput . OutputColumnCollection . Count )
852+ {
853+ for ( int i = passThroughOutput . OutputColumnCollection . Count ; i < connectionFlatFile . Columns . Count ; i ++ )
854+ {
855+ IDTSConnectionManagerFlatFileColumn100 FFcolumn = connectionFlatFile . Columns [ i ] ;
856+ IDTSOutputColumn100 outColumn = passThroughOutput . OutputColumnCollection . New ( ) ;
857+ ManageColumns . SetOutputColumnDefaults ( outColumn , connectionFlatFile . CodePage ) ;
858+ ManageProperties . AddOutputColumnProperties ( outColumn . CustomPropertyCollection ) ;
859+ outColumn . Name = ( ( IDTSName100 ) FFcolumn ) . Name ;
860+ outColumn . SetDataTypeProperties ( FFcolumn . DataType , FFcolumn . MaximumWidth , FFcolumn . DataPrecision , FFcolumn . DataScale , connectionFlatFile . CodePage ) ;
861+ IDTSExternalMetadataColumn100 eColumn = passThroughOutput . ExternalMetadataColumnCollection . New ( ) ;
862+ eColumn . Name = outColumn . Name ;
863+ eColumn . DataType = outColumn . DataType ;
864+ eColumn . Precision = outColumn . Precision ;
865+ eColumn . Scale = outColumn . Scale ;
866+ eColumn . Length = outColumn . Length ;
867+ outColumn . ExternalMetadataColumnID = eColumn . ID ;
868+ }
869+ }
870+ else if ( connectionFlatFile . Columns . Count < passThroughOutput . OutputColumnCollection . Count )
871+ {
872+ while ( connectionFlatFile . Columns . Count < passThroughOutput . OutputColumnCollection . Count )
873+ {
874+ passThroughOutput . OutputColumnCollection . RemoveObjectByIndex ( passThroughOutput . OutputColumnCollection . Count - 1 ) ;
875+ passThroughOutput . ExternalMetadataColumnCollection . RemoveObjectByIndex ( passThroughOutput . OutputColumnCollection . Count - 1 ) ;
876+ }
877+ }
851878 for ( int i = 0 ; i < connectionFlatFile . Columns . Count ; i ++ )
852879 {
853880 IDTSOutputColumn100 outColumn = passThroughOutput . OutputColumnCollection [ i ] ;
881+ IDTSExternalMetadataColumn100 eColumn = passThroughOutput . ExternalMetadataColumnCollection [ i ] ;
854882 IDTSConnectionManagerFlatFileColumn100 FFcolumn = connectionFlatFile . Columns [ i ] ;
855883 if ( ( FFcolumn . MaximumWidth != outColumn . Length )
856884 || ( FFcolumn . DataType != outColumn . DataType )
@@ -861,6 +889,13 @@ public override void ReinitializeMetaData()
861889 {
862890 outColumn . SetDataTypeProperties ( FFcolumn . DataType , FFcolumn . MaximumWidth , FFcolumn . DataPrecision , FFcolumn . DataScale , connectionFlatFile . CodePage ) ;
863891 outColumn . Name = ( ( IDTSName100 ) FFcolumn ) . Name ;
892+ eColumn . Name = ( ( IDTSName100 ) FFcolumn ) . Name ;
893+ eColumn . Name = outColumn . Name ;
894+ eColumn . DataType = outColumn . DataType ;
895+ eColumn . Precision = outColumn . Precision ;
896+ eColumn . Scale = outColumn . Scale ;
897+ eColumn . Length = outColumn . Length ;
898+ outColumn . ExternalMetadataColumnID = eColumn . ID ;
864899 }
865900 }
866901 }
0 commit comments