Как запустить выборку с использованием командного файла?

Мне нужно запросить базу данных сервера SQL с помощью командного файла. Я поместил эти cmdlines в командный файл. Когда я запускаю командный файл. Курсор остается там после установления доверенного соединения.

OSQL -E 
use db1
SELECT count(*) FROM table_01 t1 
left join table_02 t2 on t1.tableID = t2.tableID 
WHERE t1.Date < '20110724' 
Go

Любые предложения, пожалуйста?

2 ответа

Решение

osql имеет простую природу.

Например, я запускаю команду SQL из e:\backupdb.txt с

osql -S servername -U user -P password -i e:\backupdb.txt

это делает работу

Вот как я это делаю.

Сначала создайте нужный сценарий SQL и сохраните его в виде простого текстового файла.

Далее, используйте SQLCMD (или OSQL или, извините за мысль, ISQL) для вызова этого файла, примерно так:

SQLCMD -S %1 -E -b -h-1 -I -d tempdb -i BulkDeploy.txt  > BulkDeploy_%DateString%.txt

Куда:

  • S указывает сервер экземпляра SQL (здесь, указанный в первом параметре пакета)
  • E использовать NT аутентификацию
  • b если SQL обнаружит ошибку, верните значение, которое пакет ERRORLEVEL может получить и обработать
  • h-1 не возвращает строк заголовка (возвращаются наборы данных IF)
  • Я включил QUOTED_IDENTIFIER (это однажды взорвалось мне в лицо, я забыл, как и почему, и с тех пор я включил его)
  • База данных d для подключения
  • я выполняю следующий скрипт и завершаю работу
  • > направляет любой вывод в указанный файл для последующей обработки

SQLCMD et. и др. Есть много параметров, проверить их в Books Online. Дополнительные тонкости могут быть достигнуты с помощью параметров партии.

Другие вопросы по тегам