sqlcmd — запуск служебной программы
Служебная программа sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов в командной строке, в режиме SQLCMD в SQL Server Management Studio, а также в файле скрипта Windows или в шаге задания агента SQL Server (Cmd.exe).
По умолчанию в программе sqlcmdиспользуется проверка подлинности Windows. Чтобы использовать проверку подлинности SQL Server, необходимо указать имя пользователя и пароль с помощью параметров -U и -P .
По умолчанию SQL Server Express устанавливает в качестве именованного экземпляра sqlexpress.
Запуск программы sqlcmd и подключение к экземпляру SQL Server по умолчанию
- В меню «Пуск» выберите Выполнить. В поле Открыть введите cmd, а затем нажмите кнопку ОК, чтобы открыть окно командной строки. (Если вы еще не подключились к этому экземпляру ядра СУБД SQL Server, возможно, потребуется настроить SQL Server для принятия подключений.)
- В командной строке введите sqlcmd.
- Нажмите клавишу ВВОД. Теперь у вас есть надежное подключение к экземпляру SQL Server по умолчанию, работающему на компьютере. 1> представляет собой подсказку программы sqlcmd с номером строки. При каждом нажатии клавиши ВВОД номер увеличивается на единицу.
- Чтобы завершить сеанс sqlcmd , введите EXIT в запросе sqlcmd .
Запуск служебной программы sqlcmd и подключение к именованному экземпляру SQL Server
- Откройте окно командной строки и введите sqlcmd -SмойСервер\имяЭкземпляра. Замените myServer\instanceName именем компьютера и экземпляром SQL Server, к которому требуется подключиться.
- Нажмите клавишу ВВОД. Запрос sqlcmd ( 1> ) указывает, что вы подключены к указанному экземпляру SQL Server.
Заметка Введенные инструкции Transact-SQL хранятся в буфере. Они выполняются в пакетном режиме при обнаружении команды GO .
Далее
Дополнительные сведения о sqlcmd и связанных понятиях см. в следующих статьях:
- Использование режима скриптов SQLCMD в SQL Server Management Studio
- Выполнение файлов скрипта Transact-SQL с использованием программы sqlcmd
- Использование программы sqlcmd
- Инструкции служебных программ SQL Server — GO
Вход в экземпляр SQL Server (командная строка)
В этом разделе описывается, как проверить связь с экземпляром SQL Server, используя программу sqlcmd .
Вход в экземпляр SQL Server по умолчанию
- В командной строке введите следующую команду для соединения с использованием проверки подлинности Windows:
sqlcmd [ /E ] [ /S servername ]
Вход в именованный экземпляр SQL Server
- В командной строке введите следующую команду для соединения с использованием проверки подлинности Windows:
sqlcmd [ /E ] /S servername\instancename
Как открыть командную строку sql
Что, пошли дальше? База созданная типовой установкой, работает!? Замечательно! Теперь давайте попробуем сделать что-то полезное! Тем более, что уже руки наверное чешутся! Думаю пришло самое время обратить внимание на приложение с именем SQL Plus!
Запускайте! В первом шаге мы уже запускали SQL Plus! Но только для того, чтобы убедиться, что все нормально. Сейчас с помощью «Плюса», мы попробуем научиться самым азам работы с сервером БД и немного поизображать админа БД. Итак, запустили?
В поле «Имя польз.:», пишем system, в поле «пароль:» пишем manager, а вот в поле «Строка связи:» пишем то самое имя сетевой службы, созданное в прошлый раз. Если мне не изменяет память, то звали ее PROBA! Если все прошло хорошо, то мы увидим примерно следующее:
------------------------------------------------------------------------- SQL*Plus: Release 8.1.5.0.0 - Production on Пнд Июн 23 22:13:55 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. Присоединен к: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production SQL> |(мигает!)
Это значит, что все прекрасно, и вы как администратор допущены в самое сердце вашего сервера Oracle! Объясню сразу и без вариантов, здесь будет рассматриваться работа и примеры в командной строке SQL Plus! Никаких красивых, визардов и волшебников не БУДЕТ. И вот почему, если вы действительно хотите усвоить довольно мощную БД oracle, а так же ее встроенный язык программирования PL/SQL, то начинать будем, с КОММАНДНОЙ СТРОКИ! Я в свое время навидался, крутых, навороченных, молодых людей, которые понятия не имели, не то что о возможности, а даже не подозревали, что каталог создается, в командной строке DOS! 🙂 К стати вопрос на засыпку, а как создать каталог на диске в строке DOS?
Так что, тот, кто привык ставить галочки в визардах, советую, немного напрячь воображение или. ну это уже решать вам! 🙂 Так же могу сказать, что SQL Plus, действительно имеет ряд недостатков и конечно же в дальнейшем, мы перейдем на что-то более передовое, Но. Как инструмент для истинного знатока администрирования БД Oracle, это то что, как раз и достаточно! Вот так. 🙂 Ладно, хватит болтать, пора действовать!
В ответ на это приглашение
Введите примерно следующее:
SELECT COUNT(*) FROM USER_OBJECTS
Нажмите Enter и увидите:
SQL> SELECT COUNT(*) FROM USER_OBJECTS 2
Это интерпретатор команд предлагает ввести следующую строку для вашего выражения если написать, что-то еще, то появится:
3 4 и т.д.
То есть среда предлагает вам ввести выражение построчно столько сколько нужно! Например, если вы намереваетесь, записать какой либо сложный запрос!
Да, но нам нужно выполнить только один короткий оператор и увидеть результат!
Да запросто! Там где было 2, введите символ «/» и снова нажмите Enter это означает, что вы закончили ввод и собираетесь, получить результат!
Я получил примерно следующее:
COUNT(*) --------- 64
Что значит, что, пользователь SYSTEM, имеет в своей схеме 64 объекта БД! Если фраза не совсем понятна, пока не напрягайтесь все будет далее. 🙂
Сейчас в ответ на приглашение SQL> введите еще раз «/» и Enter!
COUNT(*) --------- 64
Так можно делать хоть целый день! Но боюсь, что вас примут за . а не важно. 🙂
Это значит, что наше выражение где-то внутри и поле ввода «/» может выполняться хоть сто раз! Еще выражение «/» можно заменить, написав RUN вот так:
SQL> RUN 1* SELECT COUNT(*) FROM USER_OBJECTS COUNT(*) --------- 64
Видите, теперь мы снова увидели выражение, которое содержится в строковом буфере и поле нажатия Enter не нужно больше ничего!
Если же вы просто хотите посмотреть весь строковый буфер SQL Plus, то введите примерно следующее:
SQL> LIST
SQL> LIST 1* SELECT COUNT(*) FROM USER_OBJECTS
А вот и сам строковый буфер!
Еще она полезная команда SQL Plus это EDIT, на ней остановимся подробнее.
SQL> EDIT
После нажатия Enter появится Блокнот, мое любимое орудие при написании скриптов PL/SQL. В окне блокнота, будет строка:
SELECT COUNT(*) FROM USER_OBJECTS /
Если ничего не менять, то она же и останется, если вместо нее написать, например:
SELECT COUNT(*) FROM USER_TABLES /
То при закрытии будет задан вопрос: Сохранить изменения в файле afiedt.buf!
Вот он то и содержит, то, что хранит буфер, а лежит он обычно в каталоге C:\Oracle\Bin! Говорим да сохранить, и видим следующее:
1* SELECT COUNT(*) FROM USER_TABLES SQL>
Что-то не то, а! Вводим «/»! Упсс, получилось!
COUNT(*) --------- 17
У пользователя SYSTEM 17 таблиц в схеме! Просто замечательно! Еще можно делать следующее, создайте каталог на вашем диске, скажем Temp и поместите в него файл содержащий следующее:
C:\Temp\proba.txt Hello world.
SQL> EDIT C:\temp\proba.txt
Откроется Блокнот и покажет содержимое файла, вроде бы бесполезно, но не совсем. дальше пригодится! Да, напоследок еще пара полезных команд, если экран SQL Plus сильно захламлен введите CLEAR SCREEN и будет чисто! Если надоели команды в буфере напиши CLEAR BUFFER и привет. Все очистится! Пока можете потренироваться с вышеизложенным, но советую сменить пользователя, так как работа в этом может при неосторожных действиях завалить сервер. Как менять пользователя на ходу и кое что еще в следующем шаге!
Использование командной строки SQL Server

В практике аудита использование СУБД SQL Server для хранения и анализа данных – одно из непременных условий, существенно повышающих качество проводимой работы.
А обслуживание базы данных, включающее, в том числе, резервное копирование данных, крайне важно для обеспечения ее бесперебойной работы.
В этой статье я поделюсь альтернативным способом того, как мы автоматизировали создание ежедневной резервной копии базы данных для обеспечения возможности восстановления данных в случае какого-либо инцидента. Мы сделали это с помощью служебной программы SQLCMD без запуска SQL Server Management Studio.
Но для начала немного простых примеров использования sqlcmd (все данные тестовые).
Посмотрим, как это работает в интерактивном режиме.
Запускаем командную строку Windows – cmd.
Чтобы подключиться к именованному экземпляру SQL Server, укажем имя сервера и имя экземпляра SQL Server (в примере соответственно DESKTOP\SQLEXPRESS), с которым необходимо соединиться.
sqlcmd -S DESKTOP\SQLEXPRESS –E
–S указывает на server\instance_name;
–E –trusted connection (доверительное соединение).

Отображаемая в командной строке цифра 1> означает, что подключение состоялось и есть готовность принимать запросы для исполнения.
Если ранее при создании пользователя SQL Server для пользователя была включена аутентификацию SQL Server,

то при подключении требуется указать имя пользователя и ввести его пароль.
Чтобы это выполнить, предварительно необходимо выйти из sqlcmd и заново войти с указанием учетных данных:
sqlcmd -S DESKTOP\SQLEXPRESS –U DB_User
Командная строка запросит пароль для пользователя DB_User, который необходимо ввести с клавиатуры.
При желании можно указать пароль в командной строке, хотя это не рекомендуется по соображениям безопасности:
sqlcmd -S DESKTOP\SQLEXPRESS –U DB_User –P 12345678
Давайте теперь проверим текущую базу данных.
При создании входа в SQL Server можно определить базу данных, в которую необходимо войти, по умолчанию. Если она не указана, то базой данных по умолчанию будет является основная база данных (master).
select db_name() go

Следующий пример использования sqlcmd – вывод списка баз данных в экземпляре SQL:
select name from sys.databases go

Теперь давайте посмотрим на запуск sqlcmd в командном режиме.
Получим список таблиц в базе данных db1, выведя его в файл tables.txt, используя в sqlcmd подготовленный заранее и сохраненный на жестком диске ПК, сценарий tablesList.sql со следующим содержанием:
select table_name from db1.information_schema.tables;
Затем вызовем sqlcmd для выполнения созданного сценария tablesList.sql:
sqlcmd -S DESKTOP\SQLEXPRESS -E -iC:\Users\User\SQL\Scripts\tablesList.sql -oC:\Users\User\SQL\tables.txt
—i используется для указания ввода, указывается файл сценария, в примере это сохраненный tablesList.sql;
—o используется для отображения результатов вывода в файл, в примере это tables.txt
В tables.txt отображается следующий результат (для примера выбрана тестовая база данных, состоящая из одной таблицы):

Теперь вернемся к нашей задаче автоматизации резервного копирования с использованием sqlcmd и планировщика задач Windows.
Во-первых, создадим файл сценария резервного копирования базы данных db1 и сохраним его в файле backup.sql:
declare @Backup nvarchar(400) set @Backup=concat('C:\Users\User\SQL\Backup\db1-',(format(getdate(),'yyyy-MM-dd-hh-mm-ss-tt')),'.bak') backup database [db1] to disk=@Backup with noformat, noinit, name = n'db1-Backup', skip, norewind, nounload, stats=10 go
Файл резервной копии в результате выполнения этого сценария сохраняется в каталог C:\Users\User\SQL\Backup\.
Далее создаем командный файл run-sqlcmd-backup.bat следующего содержания:
@Echo off sqlcmd -S DESKTOP\SQLEXPRESS -E -iC:\Users\User\SQL\Scripts\backup.sql
И, наконец, открываем Планировщик заданий Windows (подробнее о планировщике заданий Windows можно прочесть в официальных документах Microsoft по этой тематике), для того, чтобы создать задачу резервного копирования базы данных db1, запускающую командный файл run-sqlcmd-backup.bat по необходимому расписанию.

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