2012-02-06 1 views
12

Я пытаюсь запустить SQL скрипт из файла, используя sqlcmd, используя следующую команду:Как запустить SQL файл сценария, используя SQLCMD и вывод как оболочки и файл

sqlcmd -S <server> -d <database> -i <input file> -o <output file> 
     -U <user> -P <password> 

Я бегу мой SQL файл и вывод в файл журнала.

Проблема заключается в изменении вывода sqlcmd на файл .. и я хочу получить вывод также в оболочку.

+0

Вы нашли ответ для этого? пожалуйста, если у вас есть это, ответьте здесь и ответьте на мой вопрос: http://stackoverflow.com/questions/9319025/sqlcmd-with-output-file-and-screen-output, так что проголосуйте за свой ответ, если он работает. Благодаря! :) –

+0

@ Leandro жаль не нашел ответа еще .... –

ответ

7

@Noam,

Там стандартная программа в UNIX мире, который считывает стандартного ввода и записывает в стандартный выводи в указанный файл: tee. В следующем примере перечислены текущий каталог STDOUT и «MyFile»:

$ ls | tee "myfile" 

Есть несколько открытых источников портов для окон, как wintee, и это даже тривиальным сделать собственную реализацию (см here) , но на самом деле PowerShell уже эта утилита встроенной: следующий пример Tee-Object .The аналогичен предыдущий, в PowerShell:

PS [c:\tmp] 
> dir | tee myDirContents.txt 

Следовательно, следующая команда выполнит myscript.sql в MyServer, с использованием текущих учетных данных окна и его результат будет выводиться либо на консоль и к «result.txt»:

PS [c:\tmp] 
> sqlcmd -i mysrcipt.sql -S myserver -E | tee "result.txt" 
3

@Noam, хотя я не мог найти способ дублирования обработчика STDOUT, одно решение, которое может быть решить вам проблему, чтобы выполнить сценарий SQL в выходной файл (т.е. result.txt), а затем использовать type result.txt напечатать его в STDOUT.

c:>sqlcmd -i mysrcipt.sql -o result.txt -S myserver -E 
c:>type result.txt 

Если вам действительно нужно дублировать обработчик (может быть, команда занимает много времени, и вы не хотите ждать, пока она не завершится до получения первых строк), вы можете сделать простую программу для копирования входы от STDIN в STDOUT, а также в файл. Тогда можно переписать команду как:

c:>sqlcmd -i mysrcipt.sql -S myserver -E > duplicate.exe "result.txt" 
0

Этот код может быть использован для подключения, которые требуют аутентификации

sqlcmd -S "server_name" -d "database_name" -i "input_file" -o "output_file" -U "user_name" -P "password" 
+0

-U & -P для сервера или базы данных? – ExploringApple

 Смежные вопросы

  • Нет связанных вопросов^_^