пятница, 6 февраля 2009 г.

MS SQL 2005. Работа из консоли (sqlcmd)

В MS SQL 2005 появилась(заменила другие) консольная утилитка sqlcmd. Она предназначена для работы с MS SQL 2005 при помощи консоли.
Формат вызова у неё такой:
Использование: Sqlcmd    [-U идентификатор_входа]  [-P пароль]
[-S сервер] [-H имя_узла] [-E доверенное_соединение]
[-d имя_используемой_БД] [-l время_ожидания_входа] [-t время_ожидания_запроса]
[-h заголовки] [-s разделитель_столбцов] [-w ширина_экрана]
[-a размер_пакета] [-e отображать_ввод] [-I идентиф.в_кавычках]
[-c конец_команды] [-L[c] вывести список серверов[очистить_вывод]]
[-q "запрос_ком.строки"] [-Q "запрос_ком. строки" и выйти]
[-m код_ошибки] [-V уровень_серьезности] [-W удал.конечные пробелы]
[-u вывод_в_юникоде] [-r[0|1] вывод на STDERR]
[-i входной_файл] [-o выходной_файл] [-z новый_пароль]
[-f <кодовая_страница> | i:<кодовая_страница>[,o:<кодовая_страница>]]
[-Z создать пароль и выйти]
[-k[1|2] удалить[заменить] управляющие символы]
[-y ширина_экрана_переменного_типа]
[-Y ширина_экрана_фиксированного_типа]
[-p[1] печатать статистику [формат столбцов]]
[-R использовать региональные настройки клиента]
[-b завершить выполнение командного файла при ошибке]
[-v переменная = "значение"...] [-A выделенное административное соединение]
[-X[1] отключить команды, сценарии запуска, переменные среды [и выйти]]
[-x отключить подстановку переменных]
[-? показать сводку по синтаксису]

Это значит, что можно создать файл скрипта, например для восстановление БД и
не лезть в тормознутую SQL Management Studio.
Файл restore.sql:

RESTORE DATABASE my_database FROM DISK = 'D:/DB/Backups/my_db.bak'
WITH REPLACE
[можно ещё добавить действий по смене владельца таблиц, обработке, добавлению данных т.д.]

Тогда этот скрипт можно выполнить следующей командой:

>sqlcmd -d my_database -i "C:/scripts/restore.sql" -o result_restore.txt

Результат восстановления БД будет выведен в файл result_restore.txt.
Также можно непосредственно выполнять команды при помощи этой утилиты:
>sqlcmd -d my_database
1>:out result.txt //выведет результаты в файл
1>exit(select * from TBL_SAMPLE) //выполнит запрос и выйдет

Можно заюзать так:
>sqlcmd -d my_database -q "select * from TBL_SAMPLE"
Выведет результаты выполнения скрипта на экран.

Вообщем консоль способствует повышению эффективности труда :)

Комментариев нет:

Отправить комментарий