• C# XML serialisation should be quickest if implemented correctly.

    How have you implemented it? It sounds like you might be doing individual inserts for each row via a database connection embedded in the C# code? Try a different way. Implement it as an SSIS script task in a data flow and add rows to the output buffer within the read block of the XmlReader. That way, you're streaming the data into a bulk insert task, which is much more efficient.

    You could also initialise a bulk load from within .Net to keep it as a discrete application, but via SSIS is much easier.