Я написал процесс BCP с запросом в качестве опции.В результате выполняется запрос, и результаты записываются (или должны быть) в указанный выходной файл.Используемый запрос был подтвержден в SQL Query Analyzer (с использованием MS SQL 2000) для генерации известного набора результатов.
Однако, когда я выполняю пакетный файл с помощью команды BCP, он возвращает ноль строкполучить ответ "0 строк скопировано").Однако я могу взять этот запрос и запустить его вне процесса BCP (в анализаторе запросов) и получить 42 745 строк.Я также могу создать представление и выполнить более простой запрос и заставить его работать, используя опцию BCP ... queryout.Я использую запрос, объединяющий информацию из двух таблиц:
bcp "select obj_id, loc_code, CONVERT(VARCHAR(20), create_date, 20) AS build_date,
model_id, (len(build_string)/4) as feature_count, build_string
from my_db..builds a, my_db..models b
where a.model_id = b.model_id and obj_id like '_________C%' and obj_id not like '1G0%'" queryout z:\test.txt -U %1 -P %2 -S SQLSVR\VM_PROD -c
Как видите, запрос является более сложным, чем "select * from my_db..builds".По сути, если я создаю представление с использованием более сложного запроса, а затем запускаю запрос bcp ... с простым, как уже отмечалось, простым запросом, чтобы извлечь данные из представления, он работает нормально.Я не могу понять, почему более сложный запрос не работает в команде BCP.Может ли это быть тайм-аут перед возвратом результатов, или BCP не знает, как обрабатывать сложный запрос «в стиле соединения»?