Все в этом сообщении xp_cmdshell Query Length Too Large Мне удалось получить исправление проблемы, с которой я столкнулся с пределом размера запроса, используя xp_cmdshell. Причина, по которой я писал такой длинный запрос, заключалась в попытке обойти еще одну проблему, тот факт, что bcp, кажется, преобразует пустые строки (из таблицы, содержащей поля с пустыми строками) в некоторый закодированный символ («NUL» или «r», или что-то). Это приводит к тому, для чего я могу использовать экспортированные данные. Запрос на экспорт у меня естьBCP Export автоматически преобразует пустые строки в NUL
string strBcp = String.Format(
"declare @sql varchar(8000) " +
"select @sql = 'bcp \"SELECT * FROM [{0}]..[ivwTmpDrgDataView];\" ' +" +
"'queryout \"{1}\\DRGData.txt\" -c -t -T -S ' + @@servername " +
"exec master..xp_cmdshell @sql;",
strDatabase,
strDataDir);
Это прекрасно работает, но в экспортируемый файл значения базы данных преобразуются
NULL -> Empty String (Which is fine!)
Empty String -> Some strange character
Я мог читать .txt файл с C#, а затем перекодировать - , что является лучший способ конвертировать мой «странный символ» обратно в то, что он должен быть, пустую строку?
Спасибо за ваше время.
Так что это лучший способ, чтобы преобразовать мой странный символ пустой строки. То есть, чтобы bcp записывал пустую строку в виде пустой строки? – MoonKnight
с помощью 'coalesce' или' IsNull' в вашем выходном запросе? – paul