Hello,

I'm new to DataObjects.net and i'm using the latest version.

When I try to read records out of my old database with a regular datareader and insert them with DO4, the performance is terrible.. (40 seconds for 200.000 records..) Here is my code, I hope you can see what i'm doing wrong...:

using (var transactionScope = Transaction.Open())
            {
                while (myReader.Read())
                {
                    Core.Model.AppointmentCore _appointment = new Core.Model.AppointmentCore();

                    _appointment.start_appointment = Convert.ToDateTime(myReader["start_appointment"].ToString());
                    _appointment.end_appointment = Convert.ToDateTime(myReader["end_appointment"].ToString());
                    _appointment.description = myReader["description"].ToString();

                    _appointments.Add(_appointment);
                }
                transactionScope.Complete();
            }

I've set the BatchSize to 10.000 (or more), but this doesn't make much of a difference.. Removing the transaction doens't improve anything.

Is there anything else I can try?


Updated at 28.04.2010 9:57:56

Hello, Try splitting one huge transaction into multiple ones (10-20k items); using batch size over 256-512 elements is also not recommended. BTW, what '_appointments' variable is?

I'm sorry:

List<Core.Model.AppointmentCore> _appointments = new List<Core.Model.AppointmentCore>();

[Serializable]
    [HierarchyRoot(InheritanceSchema = InheritanceSchema.SingleTable)]
    public class AppointmentCore : Entity
    {
        [Key, Field]
        public long ID { get; private set; }

        [Field]
        public DateTime start_appointment { get; set; }

        [Field]
        public DateTime end_appointment { get; set; }

        [Field]
        public string description { get; set; }

        public AppointmentCore()
        {
        }

        public AppointmentCore(long ID, DateTime start_appointment, DateTime end_appointment, string description)
        {
            this.ID = ID;
            this.start_appointment = start_appointment;
            this.end_appointment = end_appointment;
            this.description = description;
        }
    }

Updated at 28.04.2010 11:06:59

I've deleted the SQL Datareader to make sure there was no overhead there... Just adding static date's and strings now in batches of 10.000 items per transaction (total of 200.000, and batchsize set to 250):

for (int y = 0; y < 20; y++)
            {
                using (var transactionScope = Transaction.Open())
                {
                    for (int i = 0; i < 10000; i++)
                    {
                        MPX.BL.Core.Model.AppointmentCore _appointment = new MPX.BL.Core.Model.AppointmentCore();

                        _appointment.start_appointment = new DateTime(2000, 1, 1);
                        _appointment.end_appointment = new DateTime(2003, 1, 1);
                        _appointment.description = "test";
                    }
                    transactionScope.Complete();
                }
            }

As you can see i've removed the _appointments list...

Here is my SQL Profiler output: 1.

INSERT INTO [dbo].[Int64-Generator] DEFAULT VALUES;
SELECT SCOPE_IDENTITY();

2.

exec sp_executesql N'INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p1_0, @p1_1, @p1_2, @p1_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p2_0, @p2_1, @p2_2, @p2_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p3_0, @p3_1, @p3_2, @p3_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p4_0, @p4_1, @p4_2, @p4_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p5_0, @p5_1, @p5_2, @p5_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p6_0, @p6_1, @p6_2, @p6_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p7_0, @p7_1, @p7_2, @p7_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p8_0, @p8_1, @p8_2, @p8_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p9_0, @p9_1, @p9_2, @p9_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p10_0, @p10_1, @p10_2, @p10_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p11_0, @p11_1, @p11_2, @p11_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p12_0, @p12_1, @p12_2, @p12_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p13_0, @p13_1, @p13_2, @p13_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p14_0, @p14_1, @p14_2, @p14_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p15_0, @p15_1, @p15_2, @p15_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p16_0, @p16_1, @p16_2, @p16_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p17_0, @p17_1, @p17_2, @p17_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p18_0, @p18_1, @p18_2, @p18_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p19_0, @p19_1, @p19_2, @p19_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p20_0, @p20_1, @p20_2, @p20_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p21_0, @p21_1, @p21_2, @p21_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p22_0, @p22_1, @p22_2, @p22_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p23_0, @p23_1, @p23_2, @p23_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p24_0, @p24_1, @p24_2, @p24_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p25_0, @p25_1, @p25_2, @p25_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p26_0, @p26_1, @p26_2, @p26_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p27_0, @p27_1, @p27_2, @p27_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p28_0, @p28_1, @p28_2, @p28_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p29_0, @p29_1, @p29_2, @p29_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p30_0, @p30_1, @p30_2, @p30_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p31_0, @p31_1, @p31_2, @p31_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p32_0, @p32_1, @p32_2, @p32_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p33_0, @p33_1, @p33_2, @p33_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p34_0, @p34_1, @p34_2, @p34_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p35_0, @p35_1, @p35_2, @p35_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p36_0, @p36_1, @p36_2, @p36_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p37_0, @p37_1, @p37_2, @p37_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p38_0, @p38_1, @p38_2, @p38_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p39_0, @p39_1, @p39_2, @p39_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p40_0, @p40_1, @p40_2, @p40_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p41_0, @p41_1, @p41_2, @p41_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p42_0, @p42_1, @p42_2, @p42_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p43_0, @p43_1, @p43_2, @p43_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p44_0, @p44_1, @p44_2, @p44_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p45_0, @p45_1, @p45_2, @p45_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p46_0, @p46_1, @p46_2, @p46_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p47_0, @p47_1, @p47_2, @p47_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p48_0, @p48_1, @p48_2, @p48_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p49_0, @p49_1, @p49_2, @p49_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p50_0, @p50_1, @p50_2, @p50_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p51_0, @p51_1, @p51_2, @p51_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p52_0, @p52_1, @p52_2, @p52_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p53_0, @p53_1, @p53_2, @p53_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p54_0, @p54_1, @p54_2, @p54_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p55_0, @p55_1, @p55_2, @p55_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p56_0, @p56_1, @p56_2, @p56_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p57_0, @p57_1, @p57_2, @p57_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p58_0, @p58_1, @p58_2, @p58_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p59_0, @p59_1, @p59_2, @p59_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p60_0, @p60_1, @p60_2, @p60_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p61_0, @p61_1, @p61_2, @p61_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p62_0, @p62_1, @p62_2, @p62_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p63_0, @p63_1, @p63_2, @p63_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p64_0, @p64_1, @p64_2, @p64_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p65_0, @p65_1, @p65_2, @p65_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p66_0, @p66_1, @p66_2, @p66_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p67_0, @p67_1, @p67_2, @p67_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p68_0, @p68_1, @p68_2, @p68_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p69_0, @p69_1, @p69_2, @p69_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p70_0, @p70_1, @p70_2, @p70_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p71_0, @p71_1, @p71_2, @p71_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p72_0, @p72_1, @p72_2, @p72_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p73_0, @p73_1, @p73_2, @p73_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p74_0, @p74_1, @p74_2, @p74_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p75_0, @p75_1, @p75_2, @p75_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p76_0, @p76_1, @p76_2, @p76_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p77_0, @p77_1, @p77_2, @p77_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p78_0, @p78_1, @p78_2, @p78_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p79_0, @p79_1, @p79_2, @p79_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p80_0, @p80_1, @p80_2, @p80_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p81_0, @p81_1, @p81_2, @p81_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p82_0, @p82_1, @p82_2, @p82_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p83_0, @p83_1, @p83_2, @p83_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p84_0, @p84_1, @p84_2, @p84_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p85_0, @p85_1, @p85_2, @p85_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p86_0, @p86_1, @p86_2, @p86_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p87_0, @p87_1, @p87_2, @p87_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p88_0, @p88_1, @p88_2, @p88_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p89_0, @p89_1, @p89_2, @p89_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p90_0, @p90_1, @p90_2, @p90_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p91_0, @p91_1, @p91_2, @p91_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p92_0, @p92_1, @p92_2, @p92_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p93_0, @p93_1, @p93_2, @p93_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p94_0, @p94_1, @p94_2, @p94_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p95_0, @p95_1, @p95_2, @p95_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p96_0, @p96_1, @p96_2, @p96_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p97_0, @p97_1, @p97_2, @p97_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p98_0, @p98_1, @p98_2, @p98_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p99_0, @p99_1, @p99_2, @p99_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p100_0, @p100_1, @p100_2, @p100_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p101_0, @p101_1, @p101_2, @p101_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p102_0, @p102_1, @p102_2, @p102_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p103_0, @p103_1, @p103_2, @p103_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p104_0, @p104_1, @p104_2, @p104_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p105_0, @p105_1, @p105_2, @p105_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p106_0, @p106_1, @p106_2, @p106_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p107_0, @p107_1, @p107_2, @p107_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p108_0, @p108_1, @p108_2, @p108_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p109_0, @p109_1, @p109_2, @p109_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p110_0, @p110_1, @p110_2, @p110_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p111_0, @p111_1, @p111_2, @p111_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p112_0, @p112_1, @p112_2, @p112_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p113_0, @p113_1, @p113_2, @p113_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p114_0, @p114_1, @p114_2, @p114_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p115_0, @p115_1, @p115_2, @p115_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p116_0, @p116_1, @p116_2, @p116_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p117_0, @p117_1, @p117_2, @p117_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p118_0, @p118_1, @p118_2, @p118_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p119_0, @p119_1, @p119_2, @p119_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p120_0, @p120_1, @p120_2, @p120_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p121_0, @p121_1, @p121_2, @p121_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p122_0, @p122_1, @p122_2, @p122_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p123_0, @p123_1, @p123_2, @p123_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p124_0, @p124_1, @p124_2, @p124_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p125_0, @p125_1, @p125_2, @p125_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p126_0, @p126_1, @p126_2, @p126_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p127_0, @p127_1, @p127_2, @p127_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p128_0, @p128_1, @p128_2, @p128_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p129_0, @p129_1, @p129_2, @p129_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p130_0, @p130_1, @p130_2, @p130_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p131_0, @p131_1, @p131_2, @p131_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p132_0, @p132_1, @p132_2, @p132_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p133_0, @p133_1, @p133_2, @p133_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p134_0, @p134_1, @p134_2, @p134_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p135_0, @p135_1, @p135_2, @p135_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p136_0, @p136_1, @p136_2, @p136_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p137_0, @p137_1, @p137_2, @p137_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p138_0, @p138_1, @p138_2, @p138_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p139_0, @p139_1, @p139_2, @p139_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p140_0, @p140_1, @p140_2, @p140_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p141_0, @p141_1, @p141_2, @p141_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p142_0, @p142_1, @p142_2, @p142_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p143_0, @p143_1, @p143_2, @p143_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p144_0, @p144_1, @p144_2, @p144_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p145_0, @p145_1, @p145_2, @p145_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p146_0, @p146_1, @p146_2, @p146_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p147_0, @p147_1, @p147_2, @p147_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p148_0, @p148_1, @p148_2, @p148_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p149_0, @p149_1, @p149_2, @p149_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p150_0, @p150_1, @p150_2, @p150_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p151_0, @p151_1, @p151_2, @p151_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p152_0, @p152_1, @p152_2, @p152_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p153_0, @p153_1, @p153_2, @p153_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p154_0, @p154_1, @p154_2, @p154_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p155_0, @p155_1, @p155_2, @p155_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p156_0, @p156_1, @p156_2, @p156_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p157_0, @p157_1, @p157_2, @p157_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p158_0, @p158_1, @p158_2, @p158_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p159_0, @p159_1, @p159_2, @p159_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p160_0, @p160_1, @p160_2, @p160_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p161_0, @p161_1, @p161_2, @p161_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p162_0, @p162_1, @p162_2, @p162_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p163_0, @p163_1, @p163_2, @p163_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p164_0, @p164_1, @p164_2, @p164_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p165_0, @p165_1, @p165_2, @p165_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p166_0, @p166_1, @p166_2, @p166_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p167_0, @p167_1, @p167_2, @p167_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p168_0, @p168_1, @p168_2, @p168_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p169_0, @p169_1, @p169_2, @p169_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p170_0, @p170_1, @p170_2, @p170_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p171_0, @p171_1, @p171_2, @p171_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p172_0, @p172_1, @p172_2, @p172_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p173_0, @p173_1, @p173_2, @p173_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p174_0, @p174_1, @p174_2, @p174_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p175_0, @p175_1, @p175_2, @p175_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p176_0, @p176_1, @p176_2, @p176_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p177_0, @p177_1, @p177_2, @p177_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p178_0, @p178_1, @p178_2, @p178_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p179_0, @p179_1, @p179_2, @p179_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p180_0, @p180_1, @p180_2, @p180_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p181_0, @p181_1, @p181_2, @p181_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p182_0, @p182_1, @p182_2, @p182_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p183_0, @p183_1, @p183_2, @p183_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p184_0, @p184_1, @p184_2, @p184_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p185_0, @p185_1, @p185_2, @p185_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p186_0, @p186_1, @p186_2, @p186_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p187_0, @p187_1, @p187_2, @p187_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p188_0, @p188_1, @p188_2, @p188_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p189_0, @p189_1, @p189_2, @p189_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p190_0, @p190_1, @p190_2, @p190_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p191_0, @p191_1, @p191_2, @p191_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p192_0, @p192_1, @p192_2, @p192_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p193_0, @p193_1, @p193_2, @p193_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p194_0, @p194_1, @p194_2, @p194_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p195_0, @p195_1, @p195_2, @p195_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p196_0, @p196_1, @p196_2, @p196_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p197_0, @p197_1, @p197_2, @p197_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p198_0, @p198_1, @p198_2, @p198_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p199_0, @p199_1, @p199_2, @p199_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p200_0, @p200_1, @p200_2, @p200_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p201_0, @p201_1, @p201_2, @p201_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p202_0, @p202_1, @p202_2, @p202_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p203_0, @p203_1, @p203_2, @p203_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p204_0, @p204_1, @p204_2, @p204_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p205_0, @p205_1, @p205_2, @p205_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p206_0, @p206_1, @p206_2, @p206_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p207_0, @p207_1, @p207_2, @p207_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p208_0, @p208_1, @p208_2, @p208_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p209_0, @p209_1, @p209_2, @p209_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p210_0, @p210_1, @p210_2, @p210_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p211_0, @p211_1, @p211_2, @p211_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p212_0, @p212_1, @p212_2, @p212_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p213_0, @p213_1, @p213_2, @p213_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p214_0, @p214_1, @p214_2, @p214_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p215_0, @p215_1, @p215_2, @p215_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p216_0, @p216_1, @p216_2, @p216_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p217_0, @p217_1, @p217_2, @p217_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p218_0, @p218_1, @p218_2, @p218_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p219_0, @p219_1, @p219_2, @p219_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p220_0, @p220_1, @p220_2, @p220_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p221_0, @p221_1, @p221_2, @p221_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p222_0, @p222_1, @p222_2, @p222_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p223_0, @p223_1, @p223_2, @p223_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p224_0, @p224_1, @p224_2, @p224_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p225_0, @p225_1, @p225_2, @p225_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p226_0, @p226_1, @p226_2, @p226_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p227_0, @p227_1, @p227_2, @p227_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p228_0, @p228_1, @p228_2, @p228_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p229_0, @p229_1, @p229_2, @p229_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p230_0, @p230_1, @p230_2, @p230_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p231_0, @p231_1, @p231_2, @p231_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p232_0, @p232_1, @p232_2, @p232_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p233_0, @p233_1, @p233_2, @p233_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p234_0, @p234_1, @p234_2, @p234_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p235_0, @p235_1, @p235_2, @p235_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p236_0, @p236_1, @p236_2, @p236_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p237_0, @p237_1, @p237_2, @p237_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p238_0, @p238_1, @p238_2, @p238_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p239_0, @p239_1, @p239_2, @p239_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p240_0, @p240_1, @p240_2, @p240_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p241_0, @p241_1, @p241_2, @p241_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p242_0, @p242_1, @p242_2, @p242_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p243_0, @p243_1, @p243_2, @p243_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p244_0, @p244_1, @p244_2, @p244_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p245_0, @p245_1, @p245_2, @p245_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p246_0, @p246_1, @p246_2, @p246_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p247_0, @p247_1, @p247_2, @p247_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p248_0, @p248_1, @p248_2, @p248_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p249_0, @p249_1, @p249_2, @p249_3);
INSERT INTO [dbo].[AppointmentCore] ([ID], [start_appointment], [end_appointment], [description]) VALUES (@p250_0, @p250_1, @p250_2, @p250_3);
',N'@p1_0 bigint,@p1_1 datetime,@p1_2 datetime,@p1_3 nvarchar(4),@p2_0 bigint,@p2_1 datetime,@p2_2 datetime,@p2_3 nvarchar(4),@p3_0 bigint,@p3_1 datetime,@p3_2 datetime,@p3_3 nvarchar(4),@p4_0 bigint,@p4_1 datetime,@p4_2 datetime,@p4_3 nvarchar(4),@p5_0 bigint,@p5_1 datetime,@p5_2 datetime,@p5_3 nvarchar(4),@p6_0 bigint,@p6_1 datetime,@p6_2 datetime,@p6_3 nvarchar(4),@p7_0 bigint,@p7_1 datetime,@p7_2 datetime,@p7_3 nvarchar(4),@p8_0 bigint,@p8_1 datetime,@p8_2 datetime,@p8_3 nvarchar(4),@p9_0 bigint,@p9_1 datetime,@p9_2 datetime,@p9_3 nvarchar(4),@p10_0 bigint,@p10_1 datetime,@p10_2 datetime,@p10_3 nvarchar(4),@p11_0 bigint,@p11_1 datetime,@p11_2 datetime,@p11_3 nvarchar(4),@p12_0 bigint,@p12_1 datetime,@p12_2 datetime,@p12_3 nvarchar(4),@p13_0 bigint,@p13_1 datetime,@p13_2 datetime,@p13_3 nvarchar(4),@p14_0 bigint,@p14_1 datetime,@p14_2 datetime,@p14_3 nvarchar(4),@p15_0 bigint,@p15_1 datetime,@p15_2 datetime,@p15_3 nvarchar(4),@p16_0 bigint,@p16_1 datetime,@p16_2 datetime,@p16_3 nvarchar(4),@p17_0 bigint,@p17_1 datetime,@p17_2 datetime,@p17_3 nvarchar(4),@p18_0 bigint,@p18_1 datetime,@p18_2 datetime,@p18_3 nvarchar(4),@p19_0 bigint,@p19_1 datetime,@p19_2 datetime,@p19_3 nvarchar(4),@p20_0 bigint,@p20_1 datetime,@p20_2 datetime,@p20_3 nvarchar(4),@p21_0 bigint,@p21_1 datetime,@p21_2 datetime,@p21_3 nvarchar(4),@p22_0 bigint,@p22_1 datetime,@p22_2 datetime,@p22_3 nvarchar(4),@p23_0 bigint,@p23_1 datetime,@p23_2 datetime,@p23_3 nvarchar(4),@p24_0 bigint,@p24_1 datetime,@p24_2 datetime,@p24_3 nvarchar(4),@p25_0 bigint,@p25_1 datetime,@p25_2 datetime,@p25_3 nvarchar(4),@p26_0 bigint,@p26_1 datetime,@p26_2 datetime,@p26_3 nvarchar(4),@p27_0 bigint,@p27_1 datetime,@p27_2 datetime,@p27_3 nvarchar(4),@p28_0 bigint,@p28_1 datetime,@p28_2 datetime,@p28_3 nvarchar(4),@p29_0 bigint,@p29_1 datetime,@p29_2 datetime,@p29_3 nvarchar(4),@p30_0 bigint,@p30_1 datetime,@p30_2 datetime,@p30_3 nvarchar(4),@p31_0 bigint,@p31_1 datetime,@p31_2 datetime,@p31_3 nvarchar(4),@p32_0 bigint,@p32_1 datetime,@p32_2 datetime,@p32_3 nvarchar(4),@p33_0 bigint,@p33_1 datetime,@p33_2 datetime,@p33_3 nvarchar(4),@p34_0 bigint,@p34_1 datetime,@p34_2 datetime,@p34_3 nvarchar(4),@p35_0 bigint,@p35_1 datetime,@p35_2 datetime,@p35_3 nvarchar(4),@p36_0 bigint,@p36_1 datetime,@p36_2 datetime,@p36_3 nvarchar(4),@p37_0 bigint,@p37_1 datetime,@p37_2 datetime,@p37_3 nvarchar(4),@p38_0 bigint,@p38_1 datetime,@p38_2 datetime,@p38_3 nvarchar(4),@p39_0 bigint,@p39_1 datetime,@p39_2 datetime,@p39_3 nvarchar(4),@p40_0 bigint,@p40_1 datetime,@p40_2 datetime,@p40_3 nvarchar(4),@p41_0 bigint,@p41_1 datetime,@p41_2 datetime,@p41_3 nvarchar(4),@p42_0 bigint,@p42_1 datetime,@p42_2 datetime,@p42_3 nvarchar(4),@p43_0 bigint,@p43_1 datetime,@p43_2 datetime,@p43_3 nvarchar(4),@p44_0 bigint,@p44_1 datetime,@p44_2 datetime,@p44_3 nvarchar(4),@p45_0 bigint,@p45_1 datetime,@p45_2 datetime,@p45_3 nvarchar(4),@p46_0 bigint,@p46_1 datetime,@p46_2 datetime,@p46_3 nvarchar(4),@p47_0 bigint,@p47_1 datetime,@p47_2 datetime,@p47_3 nvarchar(4),@p48_0 bigint,@p48_1 datetime,@p48_2 datetime,@p48_3 nvarchar(4),@p49_0 bigint,@p49_1 datetime,@p49_2 datetime,@p49_3 nvarchar(4),@p50_0 bigint,@p50_1 datetime,@p50_2 datetime,@p50_3 nvarchar(4),@p51_0 bigint,@p51_1 datetime,@p51_2 datetime,@p51_3 nvarchar(4),@p52_0 bigint,@p52_1 datetime,@p52_2 datetime,@p52_3 nvarchar(4),@p53_0 bigint,@p53_1 datetime,@p53_2 datetime,@p53_3 nvarchar(4),@p54_0 bigint,@p54_1 datetime,@p54_2 datetime,@p54_3 nvarchar(4),@p55_0 bigint,@p55_1 datetime,@p55_2 datetime,@p55_3 nvarchar(4),@p56_0 bigint,@p56_1 datetime,@p56_2 datetime,@p56_3 nvarchar(4),@p57_0 bigint,@p57_1 datetime,@p57_2 datetime,@p57_3 nvarchar(4),@p58_0 bigint,@p58_1 datetime,@p58_2 datetime,@p58_3 nvarchar(4),@p59_0 bigint,@p59_1 datetime,@p59_2 datetime,@p59_3 nvarchar(4),@p60_0 bigint,@p60_1 datetime,@p60_2 datetime,@p60_3 nvarchar(4),@p61_0 bigint,@p61_1 datetime,@p61_2 datetime,@p61_3 nvarchar(4),@p62_0 bigint,@p62_1 datetime,@p62_2 datetime,@p62_3 nvarchar(4),@p63_0 bigint,@p63_1 datetime,@p63_2 datetime,@p63_3 nvarchar(4),@p64_0 bigint,@p64_1 datetime,@p64_2 datetime,@p64_3 nvarchar(4),@p65_0 bigint,@p65_1 datetime,@p65_2 datetime,@p65_3 nvarchar(4),@p66_0 bigint,@p66_1 datetime,@p66_2 datetime,@p66_3 nvarchar(4),@p67_0 bigint,@p67_1 datetime,@p67_2 datetime,@p67_3 nvarchar(4),@p68_0 bigint,@p68_1 datetime,@p68_2 datetime,@p68_3 nvarchar(4),@p69_0 bigint,@p69_1 datetime,@p69_2 datetime,@p69_3 nvarchar(4),@p70_0 bigint,@p70_1 datetime,@p70_2 datetime,@p70_3 nvarchar(4),@p71_0 bigint,@p71_1 datetime,@p71_2 datetime,@p71_3 nvarchar(4),@p72_0 bigint,@p72_1 datetime,@p72_2 datetime,@p72_3 nvarchar(4),@p73_0 bigint,@p73_1 datetime,@p73_2 datetime,@p73_3 nvarchar(4),@p74_0 bigint,@p74_1 datetime,@p74_2 datetime,@p74_3 nvarchar(4),@p75_0 bigint,@p75_1 datetime,@p75_2 datetime,@p75_3 nvarchar(4),@p76_0 bigint,@p76_1 datetime,@p76_2 datetime,@p76_3 nvarchar(4),@p77_0 bigint,@p77_1 datetime,@p77_2 datetime,@p77_3 nvarchar(4),@p78_0 bigint,@p78_1 datetime,@p78_2 datetime,@p78_3 nvarchar(4),@p79_0 bigint,@p79_1 datetime,@p79_2 datetime,@p79_3 nvarchar(4),@p80_0 bigint,@p80_1 datetime,@p80_2 datetime,@p80_3 nvarchar(4),@p81_0 bigint,@p81_1 datetime,@p81_2 datetime,@p81_3 nvarchar(4),@p82_0 bigint,@p82_1 datetime,@p82_2 datetime,@p82_3 nvarchar(4),@p83_0 bigint,@p83_1 datetime,@p83_2 datetime,@p83_3 nvarchar(4),@p84_0 bigint,@p84_1 datetime,@p84_2 datetime,@p84_3 nvarchar(4),@p85_0 bigint,@p85_1 datetime,@p85_2 datetime,@p85_3 nvarchar(4),@p86_0 bigint,@p86_1 datetime,@p86_2 datetime,@p86_3 nvarchar(4),@p87_0 bigint,@p87_1 datetime,@p87_2 datetime,@p87_3 nvarchar(4),@p88_0 bigint,@p88_1 datetime,@p88_2 datetime,@p88_3 nvarchar(4),@p89_0 bigint,@p89_1 datetime,@p89_2 datetime,@p89_3 nvarchar(4),@p90_0 bigint,@p90_1 datetime,@p90_2 datetime,@p90_3 nvarchar(4),@p91_0 bigint,@p91_1 datetime,@p91_2 datetime,@p91_3 nvarchar(4),@p92_0 bigint,@p92_1 datetime,@p92_2 datetime,@p92_3 nvarchar(4),@p93_0 bigint,@p93_1 datetime,@p93_2 datetime,@p93_3 nvarchar(4),@p94_0 bigint,@p94_1 datetime,@p94_2 datetime,@p94_3 nvarchar(4),@p95_0 bigint,@p95_1 datetime,@p95_2 datetime,@p95_3 nvarchar(4),@p96_0 bigint,@p96_1 datetime,@p96_2 datetime,@p96_3 nvarchar(4),@p97_0 bigint,@p97_1 datetime,@p97_2 datetime,@p97_3 nvarchar(4),@p98_0 bigint,@p98_1 datetime,@p98_2 datetime,@p98_3 nvarchar(4),@p99_0 bigint,@p99_1 datetime,@p99_2 datetime,@p99_3 nvarchar(4),@p100_0 bigint,@p100_1 datetime,@p100_2 datetime,@p100_3 nvarchar(4),@p101_0 bigint,@p101_1 datetime,@p101_2 datetime,@p101_3 nvarchar(4),@p102_0 bigint,@p102_1 datetime,@p102_2 datetime,@p102_3 nvarchar(4),@p103_0 bigint,@p103_1 datetime,@p103_2 datetime,@p103_3 nvarchar(4),@p104_0 bigint,@p104_1 datetime,@p104_2 datetime,@p104_3 nvarchar(4),@p105_0 bigint,@p105_1 datetime,@p105_2 datetime,@p105_3 nvarchar(4),@p106_0 bigint,@p106_1 datetime,@p106_2 datetime,@p106_3 nvarchar(4),@p107_0 bigint,@p107_1 datetime,@p107_2 datetime,@p107_3 nvarchar(4),@p108_0 bigint,@p108_1 datetime,@p108_2 datetime,@p108_3 nvarchar(4),@p109_0 bigint,@p109_1 datetime,@p109_2 datetime,@p109_3 nvarchar(4),@p110_0 bigint,@p110_1 datetime,@p110_2 datetime,@p110_3 nvarchar(4),@p111_0 bigint,@p111_1 datetime,@p111_2 datetime,@p111_3 nvarchar(4),@p112_0 bigint,@p112_1 datetime,@p112_2 datetime,@p112_3 nvarchar(4),@p113_0 bigint,@p113_1 datetime,@p113_2 datetime,@p113_3 nvarchar(4),@p114_0 bigint,@p114_1 datetime,@p114_2 datetime,@p114_3 nvarchar(4),@p115_0 bigint,@p115_1 datetime,@p115_2 datetime,@p115_3 nvarchar(4),@p116_0 bigint,@p116_1 datetime,@p116_2 datetime,@p116_3 nvarchar(4),@p117_0 bigint,@p117_1 datetime,@p117_2 datetime,@p117_3 nvarchar(4),@p118_0 bigint,@p118_1 datetime,@p118_2 datetime,@p118_3 nvarchar(4),@p119_0 bigint,@p119_1 datetime,@p119_2 datetime,@p119_3 nvarchar(4),@p120_0 bigint,@p120_1 datetime,@p120_2 datetime,@p120_3 nvarchar(4),@p121_0 bigint,@p121_1 datetime,@p121_2 datetime,@p121_3 nvarchar(4),@p122_0 bigint,@p122_1 datetime,@p122_2 datetime,@p122_3 nvarchar(4),@p123_0 bigint,@p123_1 datetime,@p123_2 datetime,@p123_3 nvarchar(4),@p124_0 bigint,@p124_1 datetime,@p124_2 datetime,@p124_3 nvarchar(4),@p125_0 bigint,@p125_1 datetime,@p125_2 datetime,@p125_3 nvarchar(4),@p126_0 bigint,@p126_1 datetime,@p126_2 datetime,@p126_3 nvarchar(4),@p127_0 bigint,@p127_1 datetime,@p127_2 datetime,@p127_3 nvarchar(4),@p128_0 bigint,@p128_1 datetime,@p128_2 datetime,@p128_3 nvarchar(4),@p129_0 bigint,@p129_1 datetime,@p129_2 datetime,@p129_3 nvarchar(4),@p130_0 bigint,@p130_1 datetime,@p130_2 datetime,@p130_3 nvarchar(4),@p131_0 bigint,@p131_1 datetime,@p131_2 datetime,@p131_3 nvarchar(4),@p132_0 bigint,@p132_1 datetime,@p132_2 datetime,@p132_3 nvarchar(4),@p133_0 bigint,@p133_1 datetime,@p133_2 datetime,@p133_3 nvarchar(4),@p134_0 bigint,@p134_1 datetime,@p134_2 datetime,@p134_3 nvarchar(4),@p135_0 bigint,@p135_1 datetime,@p135_2 datetime,@p135_3 nvarchar(4),@p136_0 bigint,@p136_1 datetime,@p136_2 datetime,@p136_3 nvarchar(4),@p137_0 bigint,@p137_1 datetime,@p137_2 datetime,@p137_3 nvarchar(4),@p138_0 bigint,@p138_1 datetime,@p138_2 datetime,@p138_3 nvarchar(4),@p139_0 bigint,@p139_1 datetime,@p139_2 datetime,@p139_3 nvarchar(4),@p140_0 bigint,@p140_1 datetime,@p140_2 datetime,@p140_3 nvarchar(4),@p141_0 bigint,@p141_1 datetime,@p141_2 datetime,@p141_3 nvarchar(4),@p142_0 bigint,@p142_1 datetime,@p142_2 datetime,@p142_3 nvarchar(4),@p143_0 bigint,@p143_1 datetime,@p143_2 datetime,@p143_3 nvarchar(4),@p144_0 bigint,@p144_1 datetime,@p144_2 datetime,@p144_3 nvarchar(4),@p145_0 bigint,@p145_1 datetime,@p145_2 datetime,@p145_3 nvarchar(4),@p146_0 bigint,@p146_1 datetime,@p146_2 datetime,@p146_3 nvarchar(4),@p147_0 bigint,@p147_1 datetime,@p147_2 datetime,@p147_3 nvarchar(4),@p148_0 bigint,@p148_1 datetime,@p148_2 datetime,@p148_3 nvarchar(4),@p149_0 bigint,@p149_1 datetime,@p149_2 datetime,@p149_3 nvarchar(4),@p150_0 bigint,@p150_1 datetime,@p150_2 datetime,@p150_3 nvarchar(4),@p151_0 bigint,@p151_1 datetime,@p151_2 datetime,@p151_3 nvarchar(4),@p152_0 bigint,@p152_1 datetime,@p152_2 datetime,@p152_3 nvarchar(4),@p153_0 bigint,@p153_1 datetime,@p153_2 datetime,@p153_3 nvarchar(4),@p154_0 bigint,@p154_1 datetime,@p154_2 datetime,@p154_3 nvarchar(4),@p155_0 bigint,@p155_1 datetime,@p155_2 datetime,@p155_3 nvarchar(4),@p156_0 bigint,@p156_1 datetime,@p156_2 datetime,@p156_3 nvarchar(4),@p157_0 bigint,@p157_1 datetime,@p157_2 datetime,@p157_3 nvarchar(4),@p158_0 bigint,@p158_1 datetime,@p158_2 datetime,@p158_3 nvarchar(4),@p159_0 bigint,@p159_1 datetime,@p159_2 datetime,@p159_3 nvarchar(4),@p160_0 bigint,@p160_1 datetime,@p160_2 datetime,@p160_3 nvarchar(4),@p161_0 bigint,@p161_1 datetime,@p161_2 datetime,@p161_3 nvarchar(4),@p162_0 bigint,@p162_1 datetime,@p162_2 datetime,@p162_3 nvarchar(4),@p163_0 bigint,@p163_1 datetime,@p163_2 datetime,@p163_3 nvarchar(4),@p164_0 bigint,@p164_1 datetime,@p164_2 datetime,@p164_3 nvarchar(4),@p165_0 bigint,@p165_1 datetime,@p165_2 datetime,@p165_3 nvarchar(4),@p166_0 bigint,@p166_1 datetime,@p166_2 datetime,@p166_3 nvarchar(4),@p167_0 bigint,@p167_1 datetime,@p167_2 datetime,@p167_3 nvarchar(4),@p168_0 bigint,@p168_1 datetime,@p168_2 datetime,@p168_3 nvarchar(4),@p169_0 bigint,@p169_1 datetime,@p169_2 datetime,@p169_3 nvarchar(4),@p170_0 bigint,@p170_1 datetime,@p170_2 datetime,@p170_3 nvarchar(4),@p171_0 bigint,@p171_1 datetime,@p171_2 datetime,@p171_3 nvarchar(4),@p172_0 bigint,@p172_1 datetime,@p172_2 datetime,@p172_3 nvarchar(4),@p173_0 bigint,@p173_1 datetime,@p173_2 datetime,@p173_3 nvarchar(4),@p174_0 bigint,@p174_1 datetime,@p174_2 datetime,@p174_3 nvarchar(4),@p175_0 bigint,@p175_1 datetime,@p175_2 datetime,@p175_3 nvarchar(4),@p176_0 bigint,@p176_1 datetime,@p176_2 datetime,@p176_3 nvarchar(4),@p177_0 bigint,@p177_1 datetime,@p177_2 datetime,@p177_3 nvarchar(4),@p178_0 bigint,@p178_1 datetime,@p178_2 datetime,@p178_3 nvarchar(4),@p179_0 bigint,@p179_1 datetime,@p179_2 datetime,@p179_3 nvarchar(4),@p180_0 bigint,@p180_1 datetime,@p180_2 datetime,@p180_3 nvarchar(4),@p181_0 bigint,@p181_1 datetime,@p181_2 datetime,@p181_3 nvarchar(4),@p182_0 bigint,@p182_1 datetime,@p182_2 datetime,@p182_3 nvarchar(4),@p183_0 bigint,@p183_1 datetime,@p183_2 datetime,@p183_3 nvarchar(4),@p184_0 bigint,@p184_1 datetime,@p184_2 datetime,@p184_3 nvarchar(4),@p185_0 bigint,@p185_1 datetime,@p185_2 datetime,@p185_3 nvarchar(4),@p186_0 bigint,@p186_1 datetime,@p186_2 datetime,@p186_3 nvarchar(4),@p187_0 bigint,@p187_1 datetime,@p187_2 datetime,@p187_3 nvarchar(4),@p188_0 bigint,@p188_1 datetime,@p188_2 datetime,@p188_3 nvarchar(4),@p189_0 bigint,@p189_1 datetime,@p189_2 datetime,@p189_3 nvarchar(4),@p190_0 bigint,@p190_1 datetime,@p190_2 datetime,@p190_3 nvarchar(4),@p191_0 bigint,@p191_1 datetime,@p191_2 datetime,@p191_3 nvarchar(4),@p192_0 bigint,@p192_1 datetime,@p192_2 datetime,@p192_3 nvarchar(4),@p193_0 bigint,@p193_1 datetime,@p193_2 datetime,@p193_3 nvarchar(4),@p194_0 bigint,@p194_1 datetime,@p194_2 datetime,@p194_3 nvarchar(4),@p195_0 bigint,@p195_1 datetime,@p195_2 datetime,@p195_3 nvarchar(4),@p196_0 bigint,@p196_1 datetime,@p196_2 datetime,@p196_3 nvarchar(4),@p197_0 bigint,@p197_1 datetime,@p197_2 datetime,@p197_3 nvarchar(4),@p198_0 bigint,@p198_1 datetime,@p198_2 datetime,@p198_3 nvarchar(4),@p199_0 bigint,@p199_1 datetime,@p199_2 datetime,@p199_3 nvarchar(4),@p200_0 bigint,@p200_1 datetime,@p200_2 datetime,@p200_3 nvarchar(4),@p201_0 bigint,@p201_1 datetime,@p201_2 datetime,@p201_3 nvarchar(4),@p202_0 bigint,@p202_1 datetime,@p202_2 datetime,@p202_3 nvarchar(4),@p203_0 bigint,@p203_1 datetime,@p203_2 datetime,@p203_3 nvarchar(4),@p204_0 bigint,@p204_1 datetime,@p204_2 datetime,@p204_3 nvarchar(4),@p205_0 bigint,@p205_1 datetime,@p205_2 datetime,@p205_3 nvarchar(4),@p206_0 bigint,@p206_1 datetime,@p206_2 datetime,@p206_3 nvarchar(4),@p207_0 bigint,@p207_1 datetime,@p207_2 datetime,@p207_3 nvarchar(4),@p208_0 bigint,@p208_1 datetime,@p208_2 datetime,@p208_3 nvarchar(4),@p209_0 bigint,@p209_1 datetime,@p209_2 datetime,@p209_3 nvarchar(4),@p210_0 bigint,@p210_1 datetime,@p210_2 datetime,@p210_3 nvarchar(4),@p211_0 bigint,@p211_1 datetime,@p211_2 datetime,@p211_3 nvarchar(4),@p212_0 bigint,@p212_1 datetime,@p212_2 datetime,@p212_3 nvarchar(4),@p213_0 bigint,@p213_1 datetime,@p213_2 datetime,@p213_3 nvarchar(4),@p214_0 bigint,@p214_1 datetime,@p214_2 datetime,@p214_3 nvarchar(4),@p215_0 bigint,@p215_1 datetime,@p215_2 datetime,@p215_3 nvarchar(4),@p216_0 bigint,@p216_1 datetime,@p216_2 datetime,@p216_3 nvarchar(4),@p217_0 bigint,@p217_1 datetime,@p217_2 datetime,@p217_3 nvarchar(4),@p218_0 bigint,@p218_1 datetime,@p218_2 datetime,@p218_3 nvarchar(4),@p219_0 bigint,@p219_1 datetime,@p219_2 datetime,@p219_3 nvarchar(4),@p220_0 bigint,@p220_1 datetime,@p220_2 datetime,@p220_3 nvarchar(4),@p221_0 bigint,@p221_1 datetime,@p221_2 datetime,@p221_3 nvarchar(4),@p222_0 bigint,@p222_1 datetime,@p222_2 datetime,@p222_3 nvarchar(4),@p223_0 bigint,@p223_1 datetime,@p223_2 datetime,@p223_3 nvarchar(4),@p224_0 bigint,@p224_1 datetime,@p224_2 datetime,@p224_3 nvarchar(4),@p225_0 bigint,@p225_1 datetime,@p225_2 datetime,@p225_3 nvarchar(4),@p226_0 bigint,@p226_1 datetime,@p226_2 datetime,@p226_3 nvarchar(4),@p227_0 bigint,@p227_1 datetime,@p227_2 datetime,@p227_3 nvarchar(4),@p228_0 bigint,@p228_1 datetime,@p228_2 datetime,@p228_3 nvarchar(4),@p229_0 bigint,@p229_1 datetime,@p229_2 datetime,@p229_3 nvarchar(4),@p230_0 bigint,@p230_1 datetime,@p230_2 datetime,@p230_3 nvarchar(4),@p231_0 bigint,@p231_1 datetime,@p231_2 datetime,@p231_3 nvarchar(4),@p232_0 bigint,@p232_1 datetime,@p232_2 datetime,@p232_3 nvarchar(4),@p233_0 bigint,@p233_1 datetime,@p233_2 datetime,@p233_3 nvarchar(4),@p234_0 bigint,@p234_1 datetime,@p234_2 datetime,@p234_3 nvarchar(4),@p235_0 bigint,@p235_1 datetime,@p235_2 datetime,@p235_3 nvarchar(4),@p236_0 bigint,@p236_1 datetime,@p236_2 datetime,@p236_3 nvarchar(4),@p237_0 bigint,@p237_1 datetime,@p237_2 datetime,@p237_3 nvarchar(4),@p238_0 bigint,@p238_1 datetime,@p238_2 datetime,@p238_3 nvarchar(4),@p239_0 bigint,@p239_1 datetime,@p239_2 datetime,@p239_3 nvarchar(4),@p240_0 bigint,@p240_1 datetime,@p240_2 datetime,@p240_3 nvarchar(4),@p241_0 bigint,@p241_1 datetime,@p241_2 datetime,@p241_3 nvarchar(4),@p242_0 bigint,@p242_1 datetime,@p242_2 datetime,@p242_3 nvarchar(4),@p243_0 bigint,@p243_1 datetime,@p243_2 datetime,@p243_3 nvarchar(4),@p244_0 bigint,@p244_1 datetime,@p244_2 datetime,@p244_3 nvarchar(4),@p245_0 bigint,@p245_1 datetime,@p245_2 datetime,@p245_3 nvarchar(4),@p246_0 bigint,@p246_1 datetime,@p246_2 datetime,@p246_3 nvarchar(4),@p247_0 bigint,@p247_1 datetime,@p247_2 datetime,@p247_3 nvarchar(4),@p248_0 bigint,@p248_1 datetime,@p248_2 datetime,@p248_3 nvarchar(4),@p249_0 bigint,@p249_1 datetime,@p249_2 datetime,@p249_3 nvarchar(4),@p250_0 bigint,@p250_1 datetime,@p250_2 datetime,@p250_3 nvarchar(4)',@p1_0=101379,@p1_1='Jan  1 2000 12:00:00:000AM',@p1_2='Jan  1 2003 12:00:00:000AM',@p1_3=N'test',@p2_0=101380,@p2_1='Jan  1 2000 12:00:00:000AM',@p2_2='Jan  1 2003 12:00:00:000AM',@p2_3=N'test',@p3_0=101381,@p3_1='Jan  1 2000 12:00:00:000AM',@p3_2='Jan  1 2003 12:00:00:000AM',@p3_3=N'test',@p4_0=101382,@p4_1='Jan  1 2000 12:00:00:000AM',@p4_2='Jan  1 2003 12:00:00:000AM',@p4_3=N'test',@p5_0=101383,@p5_1='Jan  1 2000 12:00:00:000AM',@p5_2='Jan  1 2003 12:00:00:000AM',@p5_3=N'test',@p6_0=101384,@p6_1='Jan  1 2000 12:00:00:000AM',@p6_2='Jan  1 2003 12:00:00:000AM',@p6_3=N'test',@p7_0=101385,@p7_1='Jan  1 2000 12:00:00:000AM',@p7_2='Jan  1 2003 12:00:00:000AM',@p7_3=N'test',@p8_0=101386,@p8_1='Jan  1 2000 12:00:00:000AM',@p8_2='Jan  1 2003 12:00:00:000AM',@p8_3=N'test',@p9_0=101387,@p9_1='Jan  1 2000 12:00:00:000AM',@p9_2='Jan  1 2003 12:00:00:000AM',@p9_3=N'test',@p10_0=101388,@p10_1='Jan  1 2000 12:00:00:000AM',@p10_2='Jan  1 2003 
And this for all 250 objects....

3.

exec sp_reset_connection

And this xxx(x?) times... I noticed the exec sp_reset_connection also getting executed everytime.. Is this okay? Also the INSERT and SELECT from the Int64-Generator table seems like a big overhead to me?

Thanks!


Updated at 28.04.2010 12:52:33

How much time does it take now? And how fast are you expecting it to be? About 30 seconds...

Is there anything more that I can optimize? Or is this just the maximum performance that I can get out of DO4?

This thread was imported from our support forum. The original discussion may contain more detailed answer. Original topic by stefmen.

asked Apr 28 '10 at 08:59

Editor's gravatar image

Editor
46148156157

Hello,

Try splitting one huge transaction into multiple ones (10-20k items); using batch size over 256-512 elements is also not recommended.

BTW, what '_appointments' variable is?

(Apr 28 '10 at 08:59) Dmitri Maximov Dmitri%20Maximov's gravatar image

One Answer:

Alex (Xtensive) wrote:

I'd also recommend you to study SQL Profiler output on this import scenario.

5K records per second isn't really fast, but a lot depends on:

  • Inheritance hierarchy you're using. Imagine if creation of each new appointment object touches e.g. 3 tables.

  • Actual record size

  • Count of indexes.


Alex (Xtensive) wrote:

Just noticed your reply.

So:

  • Set batch size to 128 or 256 items

  • Import about 10K items per each transaction (this must be most effecient from the point of SQL Server)

  • Remove usage of _appointments: it's easier to read them sequentially further then to always keep all of them in memory. Let GC do its job - your application will use L1\L2 caches more effeciently.

  • If this won't help, publish a part of SQL Profiler output here.


Alex (Xtensive) wrote:

That's possible - currently DO4 must be nearly two times slower in comparison to SqlBulkCopy (that's noticeably better in comparison to other players).

I remembered recently I implemented very similar task for new ASP.NET MVC Sample, see this screenshot: http://goo.gl/4pNf

Entity creation rate was nearly 7K/sec. (although there was a single transaction) - I run the sample on Core2Duo E6750 @ 2.66Ghz. I considered this as pretty normal for entities of that size in comparison to tests @ ORMBattle (there are entities composed of two long values + AFAIK, PC we used for tests there was a bit more modern).

I didn't try to repeat the same operation directly on SQL Server, but now I feel I must try this to compare the result with maximal possible insertion rate in this case. If you'll get any similar result (e.g. with SqlBulkCopy), please leave the result here. If we'll find this inacceptable, we will finally implement asynchronous batch execution to reach SqlBulkCopy performance on such operations.


Alex (Xtensive) wrote:

P.S. The only possible optimization I see now is concurrent import (several threads with their own Sessions).

Although it's not guaranteed if this will work - a lot depends on locking SQL Server will use in this case. There are no row-level conflicts, but even page-level locks might affect. On the other hand, it simply "must support" such concurrent usage. Anyway, it's easier to try then to predict the resutl here.


mahdness wrote:

you guys really need to update the results at ormbattle! at least DO

it would also be good if you posted DO 3.9 results, so that we 3.9 guys could know what kind of improvement to expect in performance (it could really motivate some clients to upgrade to 4.0)

answered Apr 28 '10 at 09:59

Editor's gravatar image

Editor
46148156157

How much time does it take now? And how fast are you expecting it to be?

(Apr 28 '10 at 09:59) Dmitri Maximov Dmitri%20Maximov's gravatar image

Alex Kofman wrote: Btw, you can see "Multiple Instance Creation" test results for different ORM tools and pure SQL client on http://ormbattle.net/ and compare it with your results.

(Apr 28 '10 at 09:59) Editor Editor's gravatar image

We know this - but we must finish with VS2010 first.

(Apr 28 '10 at 09:59) Alex Yakunin Alex%20Yakunin's gravatar image

Is there any progress on this?

I have 1 object called Training which contains an EntitySet called Runs which now contains 1 object. The Run object contains an EntitySet of DataSample. One sample per second. In my test application I created about 22.000 samples. When using SQL CE and a using() approach it took about 30 seconds to save this. When using PostgreSQL and the disconnected approach it takes about 3-4 minutes. For me, this is unacceptable slow. Are there any speed improvements I can do? Or an alternative way to store this?

(Jan 14 '11 at 05:31) jensen jensen's gravatar image

Hello Jensen,

Am I right saying that you are using DisconnectedState in bulk insert scenario?

(Jan 14 '11 at 06:42) Dmitri Maximov Dmitri%20Maximov's gravatar image

Yes, that is correct. I also experimented with the normal approach, which was a bit faster, but not that much that it really made a difference.

A user presses a start button which starts logging samples at a rate of 1 sample per second. Then he performs several actions. When he decides to stop he can choose to save the data or discard the data. Because he can choose not to save I don't think it's an option to store every 60 samples and do a delete when he chooses not to save because it would appear it takes longer to "not save" the data than to "save" the data.

(Jan 14 '11 at 07:36) jensen jensen's gravatar image

Because the data is fairly static and, after saving, is only used for analysis, no modification whatsoever I can convert this into a byte[] and store that. So I had a class which had a protected byte[] Samples and a public List<datasamples> DataSamples. When I do a conversion when saving or loading everything goes really fast (1 second to save).

Unfortunately I did not find a way to automate this. I don't want to call a ConvertToList() or ConvertToByteArray() when I need to save or access the data, and as far as I understand the OnGet/SetField functions are not of any use here.

(Jan 14 '11 at 07:58) jensen jensen's gravatar image

Jensen, consider using this approach to deal with fields of byte[] type.

(Jan 14 '11 at 08:07) Dmitri Maximov Dmitri%20Maximov's gravatar image

I had considered that, but since I use a List it means I need to implement a custom Collection object and provide a whole set of get and set functions which would require some work.

But first I wanted to know if there was any possible way for me to hook into the system when DO loads or stores the data as that would be a far faster solution.

Thanks for the fast answer!

(Jan 14 '11 at 08:10) jensen jensen's gravatar image

Sorry, I didn't catch why do you need to implement a custom Collection object. Could you explain?

Thanks.

(Jan 14 '11 at 08:22) Dmitri Maximov Dmitri%20Maximov's gravatar image

Object A should contain a list of samples (object T). Initially A had an EntitySet<t> but those inserts were slow. In my application however, I need to work with that list.

So, I could do something like

A a = GetA();
a.Load(); (convert the byte[] to a List<t>)

and something like

a.Store(); (convert the List<t> to a byte[])
m_transactionScope.Commit();

But I don't like calling a Load() and Store() function each time, it would be easier if this could be automated. When A is loaded from the database it should Load(), when saved to the database it should Store().

(Jan 14 '11 at 09:03) jensen jensen's gravatar image

So, if I create a custom collection, I can tap into the Get() and Add() functions to that collection and convert the object to a byte[] and append it to a global one.

So I can create a custom collection like:

public class MyCollection<t> : Entity {
  // Id and Key
  [Field]
  private byte[] Data { get; set; }
  public void Add(T t) { m_list.Add(t); ConvertAndAppendToData(t); }
}

Unfortunately it's not fully working yet.

The example you pointed me to uses a single object, which works, but I am working with a list so it doesn't really work for me in the same way.

(Jan 14 '11 at 09:10) jensen jensen's gravatar image

Right now I'm trying to make a working sample with a collection, let's see whether I will succeed or not.

(Jan 14 '11 at 09:23) Dmitri Maximov Dmitri%20Maximov's gravatar image

Here it is, hope it helps.

(Jan 14 '11 at 10:49) Dmitri Maximov Dmitri%20Maximov's gravatar image

That looks very promising, I'll keep you updated.

(Jan 14 '11 at 11:45) jensen jensen's gravatar image

Jensen, have you tried the solution? Was it helpful in any way?

(Jan 17 '11 at 03:47) Dmitri Maximov Dmitri%20Maximov's gravatar image

Yes, it worked like a charm. That was exactly what I was looking for. Thanks for the quick solution!

(Jan 17 '11 at 05:38) jensen jensen's gravatar image

You are welcome =)

(Jan 17 '11 at 06:01) Dmitri Maximov Dmitri%20Maximov's gravatar image
Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
toggle preview

Subscription:

Once you sign in you will be able to subscribe for any updates here

Tags:

×569

Asked: Apr 28 '10 at 08:59

Seen: 2,635 times

Last updated: Jan 17 '11 at 06:01

powered by OSQA