@@ -64,7 +64,11 @@ public void SetupSQLCEDatabase()
6464 tableCreate = "CREATE TABLE [RowCountOutput] ([KeyValue] nvarchar(255), [NumberOfRows] integer, [KeyValueStatus] nvarchar(255))" ;
6565 command . CommandText = tableCreate ;
6666 command . ExecuteNonQuery ( ) ;
67-
67+
68+ tableCreate = "CREATE TABLE [Output099] ([KeyColumn1] uniqueidentifier, [output099Column1] nvarchar(50), [output099Column2] nvarchar(50), [output099Column3] nvarchar(50))" ;
69+ command . CommandText = tableCreate ;
70+ command . ExecuteNonQuery ( ) ;
71+
6872
6973 connection . Close ( ) ;
7074 sqlCEEngine . Dispose ( ) ;
@@ -620,11 +624,28 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
620624 instance . SetOutputProperty ( keyID , ManageProperties . rowTypeValue , "001" ) ;
621625 IDTSOutputColumn100 keyColumn1 = instance . InsertOutputColumnAt ( keyID , 1 , "KeyColumn2" , String . Empty ) ;
622626 instance . SetOutputColumnDataTypeProperties ( keyID , keyColumn1 . ID , DataType . DT_I4 , 0 , 0 , 0 , 0 ) ;
627+ //instance.SetOutputColumnProperty(keyID, keyColumn1.ID, ManageProperties.usageOfColumn, Utilities.usageOfColumnEnum.Key);
623628 IDTSOutputColumn100 keyColumn2 = instance . InsertOutputColumnAt ( keyID , 2 , "KeyColumn3" , String . Empty ) ;
624629 instance . SetOutputColumnDataTypeProperties ( keyID , keyColumn2 . ID , DataType . DT_WSTR , 20 , 0 , 0 , 0 ) ;
625630 keyOutput . OutputColumnCollection [ 0 ] . Name = "KeyColumn1" ;
626631 errorOutput . OutputColumnCollection [ 5 ] . Name = "KeyColumn1" ;
627632
633+ // 002|2001-01-01|Joe Bloggs|Missing Key Value
634+
635+ IDTSOutput100 output002 = instance . InsertOutput ( DTSInsertPlacement . IP_AFTER , keyID ) ; //textFileSplitter.OutputCollection.New();
636+ int outputID = output002 . ID ;
637+ instance . SetOutputProperty ( outputID , ManageProperties . rowTypeValue , "099" ) ;
638+ instance . SetOutputProperty ( outputID , ManageProperties . typeOfOutput , Utilities . typeOfOutputEnum . DataRecords ) ;
639+ output002 . ErrorRowDisposition = DTSRowDisposition . RD_RedirectRow ;
640+ output002 . TruncationRowDisposition = DTSRowDisposition . RD_RedirectRow ;
641+ IDTSOutputColumn100 output099Column1 = instance . InsertOutputColumnAt ( outputID , 1 , "output099Column1" , String . Empty ) ;
642+ instance . SetOutputColumnDataTypeProperties ( outputID , output099Column1 . ID , DataType . DT_STR , 50 , 0 , 0 , 1252 ) ;
643+ IDTSOutputColumn100 output099Column2 = instance . InsertOutputColumnAt ( outputID , 2 , "output099Column2" , String . Empty ) ;
644+ instance . SetOutputColumnDataTypeProperties ( outputID , output099Column2 . ID , DataType . DT_STR , 50 , 0 , 0 , 1252 ) ;
645+ IDTSOutputColumn100 output099Column3 = instance . InsertOutputColumnAt ( outputID , 3 , "output099Column3" , String . Empty ) ;
646+ instance . SetOutputColumnDataTypeProperties ( outputID , output099Column3 . ID , DataType . DT_STR , 50 , 0 , 0 , 1252 ) ;
647+
648+
628649 // Add SQL CE Connection
629650 ConnectionManager sqlCECM = null ;
630651 IDTSComponentMetaData100 sqlCETarget = null ;
@@ -638,6 +659,9 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
638659 CreateSQLCEComponent ( package , dataFlowTask , "RowCountOutput" , out sqlCECM , out sqlCETarget , out sqlCEInstance ) ;
639660 CreatePath ( dataFlowTask , numberOfRowsOutput , sqlCETarget , sqlCEInstance ) ;
640661
662+ CreateSQLCEComponent ( package , dataFlowTask , "Output099" , out sqlCECM , out sqlCETarget , out sqlCEInstance ) ;
663+ CreatePath ( dataFlowTask , output002 , sqlCETarget , sqlCEInstance ) ;
664+
641665 PackageEventHandler packageEvents = new PackageEventHandler ( ) ;
642666
643667 Microsoft . SqlServer . Dts . Runtime . DTSExecResult result = package . Execute ( null , null , packageEvents as IDTSEvents , null , null ) ;
@@ -653,14 +677,14 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
653677 connection . Open ( ) ;
654678 }
655679
656- SqlCeCommand sqlCommand = new SqlCeCommand ( "SELECT * FROM [ErrorResults] WHERE ErrorMessage = 'Unexpected Row Type Value 002 found on Record 2 .'" , connection ) ;
680+ SqlCeCommand sqlCommand = new SqlCeCommand ( "SELECT * FROM [ErrorResults] WHERE ErrorMessage = 'Unexpected Row Type Value 002 found on Record 3 .'" , connection ) ;
657681 SqlCeDataReader sqlData = sqlCommand . ExecuteReader ( CommandBehavior . Default ) ;
658682 int rowCount = 0 ;
659683 while ( sqlData . Read ( ) )
660684 {
661685 rowCount ++ ;
662686 }
663- Assert . AreEqual ( 1 , rowCount , "Record 2 Error Missing" ) ;
687+ Assert . AreEqual ( 1 , rowCount , "Record 3 Error Missing" ) ;
664688
665689 sqlCommand . CommandText = "SELECT COUNT(*) FROM [ErrorResults] WHERE ErrorMessage LIKE 'Unexpected Row Type Value%'" ;
666690 sqlData = sqlCommand . ExecuteReader ( CommandBehavior . Default ) ;
@@ -714,14 +738,14 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
714738 sqlData = sqlCommand . ExecuteReader ( CommandBehavior . Default ) ;
715739 while ( sqlData . Read ( ) )
716740 {
717- Assert . AreEqual ( 6 , sqlData . GetInt32 ( 0 ) , "Number of RowCountOutput Rows incorrect" ) ;
741+ Assert . AreEqual ( 7 , sqlData . GetInt32 ( 0 ) , "Number of RowCountOutput Rows incorrect" ) ;
718742 }
719743
720744 sqlCommand . CommandText = "SELECT * FROM [RowCountOutput] WHERE KeyValue = 'Total Records'" ;
721745 sqlData = sqlCommand . ExecuteReader ( CommandBehavior . Default ) ;
722746 while ( sqlData . Read ( ) )
723747 {
724- Assert . AreEqual ( 15 , sqlData . GetInt32 ( 1 ) , "Number of Total Records incorrect" ) ;
748+ Assert . AreEqual ( 16 , sqlData . GetInt32 ( 1 ) , "Number of Total Records incorrect" ) ;
725749 Assert . AreEqual ( "Disconnected" , sqlData . GetString ( 2 ) , "KeyValue Status on Total Records incorrect" ) ;
726750 }
727751
@@ -737,7 +761,7 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
737761 sqlData = sqlCommand . ExecuteReader ( CommandBehavior . Default ) ;
738762 while ( sqlData . Read ( ) )
739763 {
740- Assert . AreEqual ( 14 , sqlData . GetInt32 ( 1 ) , "Number of Error Records incorrect" ) ;
764+ Assert . AreEqual ( 15 , sqlData . GetInt32 ( 1 ) , "Number of Error Records incorrect" ) ;
741765 Assert . AreEqual ( "Connected and Processed" , sqlData . GetString ( 2 ) , "KeyValue Status on Error Records incorrect" ) ;
742766 }
743767
@@ -749,6 +773,13 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
749773 Assert . AreEqual ( "Not configured" , sqlData . GetString ( 2 ) , "KeyValue Status on 003 incorrect" ) ;
750774 }
751775
776+ sqlCommand . CommandText = "SELECT COUNT(*) FROM [ErrorResults] WHERE ErrorMessage LIKE 'Exception Key Value%'" ;
777+ sqlData = sqlCommand . ExecuteReader ( CommandBehavior . Default ) ;
778+ while ( sqlData . Read ( ) )
779+ {
780+ Assert . AreEqual ( 1 , sqlData . GetInt32 ( 0 ) , "099 Value before Key Not Detected." ) ;
781+ }
782+
752783
753784 connection . Close ( ) ;
754785 }
0 commit comments