Skip to content

Введение в утилиту sqlcmd SQL Server

Пересказ статьи Daniel Farina. Introduction to SQL Server's sqlcmd utility


Если вам нужно выполнять команды SQL к экземпляру SQL Server из командной строки Windows, то вам поможет утилита sqlcmd. Она позволяет выполнять команды SQL из консоли, и в этой статье я познакомлю вас с использованием этого инструмента.
Обычно утилита sqlcmd не так часто используется, если сравнивать с SQL Server Management Studio (SSMS). У меня есть коллеги, которые даже не знают о ее существовании. Причина в том, что SSMS весьма сильный инструмент, который является предпочтительным выбором для ежедневной работы, но есть случаи, когда sqlcmd оказывается наилучшим вариантом.

Особенно, когда вы работаете с SQL Server на Linux. Обычно больше компании держат серверы критических баз данных в демилитаризованных зонах (DMZ), поэтому маловероятно, чтобы вы могли подключиться к этим серверам с помощью SSMS с вашей рабочей станции. Другими словами, вам может потребоваться доступ к серверу с помощью клиента ssh и либо выполнять то, что вам нужно с помощью sqlcmd, либо устанавливать туннель и подключаться с помощью SSMS.

Что такое sqlcmd?


Sqlcmd - это утилита, которая устанавливается с клиентским инструментарием при установке SQL Server. Этот инструмент позволяет выполнять операторы Transact-SQL, хранимые процедуры и файлы скриптов из консоли. Он также позволяет использовать предопределенные системные переменные и переменные, определенные пользователем. Как вы можете догадаться, то, что sqlcmd позволяет выполнять хранимые процедуры, делает возможным выполнять задания SQL Server Agent.

Другим замечательным свойством sqlcmd является возможность подключения к любой версии SQL Server, чего вы не всегда можете сделать с помощью SSMS. Причина в том, что sqlcmd использует драйвер ODBC, а не .NET System.Data.SqlClient Namespace, которое является частью ADO.NET, используемой SSMS.

Подключение sqlcmd к экземпляру по умолчанию SQL Server


Если вы подключаетесь к локальному серверу, используя Windows Authentication (проверка подлинности Windows), и текущий пользователь имеет права доступа, то вы можете просто вызвать sqlcmd в командной строке, как показано ниже, и вы подключитесь к экземпляру по умолчанию.

sqlcmd

Если вам даны подходящие разрешения, вы увидите приглашение sqlcmd, как на скриншоте ниже.



1> означает номер строки, который будет возрастать всякий раз, когда вы нажимаете клавишу ENTER и сбрасываться в 1, когда вы введете разделитель пакетов GO, как показано ниже.



На рисунке выше видно, что номер строк возрастает, пока не будет введена инструкция GO, после чего приглашение sqlcmd вернется к строке 1 после выполнения кода.

Подключение sqlcmd к экземпляру SQL Server, используя проверку подлинности Windows


Если ваша организация использует Active Directory, вы можете использовать Trusted Authentication (доверительная аутентификация) для подключения к удаленному или локальному серверу. Вам просто нужно указать сервер и имя экземпляра с помощью параметра -S и -E для использования Trusted Authentication. Тем, кто не знает, что такое Trusted Authentication, скажу, что это способ, с помощью которого Microsoft ссылается на использование аккаунта учетной записи Windows для аутентификации пользователя в разных приложениях.

Вот как можно подключиться к экземпляру. Подставьте имя своего сервера и имя экземпляра, который вам нужен.

sqlcmd -S [SERVERNAME\INSTANCE] -E

Подключение sqlcmd к экземпляру SQL Server, используя аутентификацию SQL Server


Если вам нужно подключиться с помощью аутентификации SQL Server, укажите также параметр -U с именем пользователя и параметр -P с паролем пользователя, как показано ниже. Опять таки, подставьте свои значения этих параметров.

sqlcmd -S [SERVERNAME\INSTANCE] –U [username] –P [password]

На следующем скриншоте можно увидеть, что я подключился к удаленному экземпляру SQL Server, работающему на Linux с помощью аутентификации SQL Server.



Подключение sqlcmd к экземпляру SQL Server с помощью выделенного подключения администратора (DAC)


Бывают обстоятельства, когда вы не можете подключиться к SQL Server, например, из-за нехватки ресурсов. SQL Server имеет планировщик, предназначенный для обеспечения доступа только одному подключению во всех случаях. Это и есть выделенное подключение администратора (DAC). Вы не можете подключиться к DAC, как вы делаете это обычно с помощью SQL Server Management Studio, поскольку SSMS использует два подключения - одно для браузера объектов, а другое для окна запросов. В подобных случаях sqlcmd является одним из лучших вариантов для подключения к экземпляру SQL Server и выполнения необходимых действий, чтобы вернуть экземпляр в нормальное состояние.

Для подключения к экземпляру SQL Server с помощью DAC в sqlcmd, вам потребуется добавить параметр -A.

Если вы подключаетесь с логином Windows, то вызов sqlcmd будет таким:

sqlcmd -S [SERVERNAME\INSTANCE] –E -A

Если вы хотите использовать логин SQL Server, то вы должны вызывать sqlcmd так:

sqlcmd -S [SERVERNAME\INSTANCE] –U [username] –P [password] -A
Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.