Заметил одну неприятную странность в работе BCP. Связана она с выгрузкой в файл данных BLOB полей, в моём случае, это были поля с типом text. Как я догадываюсь, из-за особенностей хранения этих типов, выгрузка данных выполняется сервером существенно медленнее, чем данных не BLOB типов, даже если объёмы данных (в исчислении получаемого на диске текстового файла) будут равны. Причём, разница во времени выгрузки одинакового объёма данных, в моих реальных случаях, была очень большая, приблизительно в 10 раз BLOB поля выгружались медленнее! Например, на одном сервере, выгрузка BLOB полей занимала 16 часов (размер текстового файла получился 60Гб), а обычных данных – 20 минут (в тексте 8Гб). У таблицы предварительно были удалены все индексы, включая кластеризованный, а также были удалены все ограничения и объекты, которые ссылались на эту таблицу.
Вот пример скрипта, который для этого использовался:
EXEC master..xp_cmdshell 'bcp "SELECT Article_ID, ArticleBody, Annotation, Remarks, mainXML FROM DBNAME.dbo.Articles" queryout "F:\Articles_blobs.txt" -C866 -b 50000 -T -S SERVERANDINSTANCENAME -f"F:\Articles_blobs.fmt"'
GO