Как запустить выборку с использованием командного файла? - PullRequest
0 голосов
/ 28 июня 2011

Мне нужно запросить базу данных сервера 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 ]

2 голосов
/ 28 июня 2011

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

Сначала создайте нужный сценарий 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 не возвращает строк заголовка (если возвращаются наборы данных)
  • Я включил QUOTED_IDENTIFIER (у меня это взорвалось один раз , я забыл, как и почему, и с тех пор я включил его)
  • d для подключения к
  • я выполняю следующий скрипт и завершаю работу
  • > направляет любой вывод в указанный файл для последующей обработки

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

1 голос
/ 28 июня 2011

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

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

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

она выполняет работу

...