2014-12-18 3 views
0

У меня есть рабочий, но относительно подробный SQL-скрипт, который я хочу запускать каждую ночь и сохранять результаты в файле csv. Планировщик заданий SQL Server, мой предпочтительный подход, похоже, не может сохранить результаты запроса в файл. Я также попытался запланировать задачу с помощью планировщика задач Windows и следующую команду: bcpПланировщик задач Windows для запуска SQL-запроса и сохранения вывода

bcp "MY QUERY HERE" queryout C:\path\to\Desktop\RTFS.txt -c -d servername -U uname -P password 

Время соединения вне на bcp. Я знаю, что SQL Server принимает удаленные подключения, потому что я могу подключиться к нему с сервера Linux в сети и выполнить все, что хочу на Python. К сожалению, хотя мне сказали, что это должно быть решение только для Windows, поэтому я не могу использовать рабочую реализацию Python/Linux.

Есть ли способ сохранить вывод в виде файла из задания SQL Server или выполнить тот же результат с расписанием задач?

+0

Можете ли вы использовать SSIS? –

+0

Я подозреваю, что вы имеете в виду агент SQL Server. Агент ничего не сохраняет в файле, это команда, которую вы выполняете, которая экспортирует данные. Если файла нет, команда не удалась. Вы должны настроить как свое задание, так и вызов 'bcp' для записи любых ошибок. –

+0

BTW вы уверены, что получаете соединение, а не команду tiemout? Тайм-ауты соединений обычно означают, что вы использовали неправильное имя сервера. Служба агента обычно работает на той же машине, что и база данных, поэтому вопросы о сети не могут быть и речи. Проблемы с брандмауэром - вы сразу же получите отказ. Если вы получаете тайм-аут команды, это потому, что работа занимает слишком много времени. –

ответ

0

Возможно, вы можете использовать osql.exe с вариантами -Q «ваш запрос» и -o «выходной файл». Я думаю, osql установлен как часть ms sql server [express] ...

0

Мое решение, которое может быть не единственным или лучшим, было в конечном итоге написать консольное приложение C#, которое делало то, что я хотел, а затем запускал что из Планировщика задач Windows.

0

Я думаю, что один из ваших параметров неверен в вашей командной строке. параметры, которые вы хотите являются [-S имя сервера] [-d имя базы данных] [-U имя пользователя] [-P пароль]

использование BCP

usage: bcp {dbtable | query} {in | out | queryout | format} datafile 
    [-m maxerrors]   [-f formatfile]   [-e errfile] 
    [-F firstrow]    [-L lastrow]    [-b batchsize] 
    [-n native type]   [-c character type]  [-w wide character type] 
    [-N keep non-text native] [-V file format version] [-q quoted identifier] 
    [-C code page specifier] [-t field terminator] [-r row terminator] 
    [-i inputfile]   [-o outfile]    [-a packetsize] 
    [-S server name]   [-U username]   [-P password] 
    [-T trusted connection] [-v version]    [-R regional enable] 
    [-k keep null values]  [-E keep identity values] 
    [-h "load hints"]   [-x generate xml format file] 
    [-d database name]  [-K application intent] 

Вы пропускаете -S тег. Вы указываете сервер в теге базы данных Кроме того, с -c, я думаю, вы должны указать тип символа, который вы хотите ... просто удалите -c и проверьте, работает ли по умолчанию по умолчанию. Можете ли вы попробовать следующее?

bcp "MY QUERY HERE" queryout C:\path\to\Desktop\RTFS.txt -S servername -d database -U uname -P password 
Смежные вопросы