Okay, as a follow up to my previous post, I will describe the methodology I finally had to settle for.  SQL Server 2000's OPENXML method is limited to 8000 characters. But, ADO.NET's SQLCommand.CommandText has a large limit, supposedly around 2 meg. I created a stored procedure that excepted a TEXT argument (in the hopes that some day I can just send the entire XML document) and using a loop in .Net send XML batches under the 8000 character limit. I was able to achieve another 25% performance gain by concatenating several of the batches together up to 1024000 characters at a time. I tried several different batch sizes, and found that trying to feed it more didn't improve performance.