Введение в утилиту 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 - это утилита, которая устанавливается с клиентским инструментарием при установке SQL Server. Этот инструмент позволяет выполнять операторы Transact-SQL, хранимые процедуры и файлы скриптов из консоли. Он также позволяет использовать предопределенные системные переменные и переменные, определенные пользователем. Как вы можете догадаться, то, что sqlcmd позволяет выполнять хранимые процедуры, делает возможным выполнять задания SQL Server Agent.
Другим замечательным свойством sqlcmd является возможность подключения к любой версии SQL Server, чего вы не всегда можете сделать с помощью SSMS. Причина в том, что sqlcmd использует драйвер ODBC, а не .NET System.Data.SqlClient Namespace, которое является частью ADO.NET, используемой SSMS.
Если вы подключаетесь к локальному серверу, используя Windows Authentication (проверка подлинности Windows), и текущий пользователь имеет права доступа, то вы можете просто вызвать sqlcmd в командной строке, как показано ниже, и вы подключитесь к экземпляру по умолчанию.
Если вам даны подходящие разрешения, вы увидите приглашение sqlcmd, как на скриншоте ниже.
1> означает номер строки, который будет возрастать всякий раз, когда вы нажимаете клавишу ENTER и сбрасываться в 1, когда вы введете разделитель пакетов GO, как показано ниже.
На рисунке выше видно, что номер строк возрастает, пока не будет введена инструкция GO, после чего приглашение sqlcmd вернется к строке 1 после выполнения кода.
Если ваша организация использует Active Directory, вы можете использовать Trusted Authentication (доверительная аутентификация) для подключения к удаленному или локальному серверу. Вам просто нужно указать сервер и имя экземпляра с помощью параметра -S и -E для использования Trusted Authentication. Тем, кто не знает, что такое Trusted Authentication, скажу, что это способ, с помощью которого Microsoft ссылается на использование аккаунта учетной записи Windows для аутентификации пользователя в разных приложениях.
Вот как можно подключиться к экземпляру. Подставьте имя своего сервера и имя экземпляра, который вам нужен.
Если вам нужно подключиться с помощью аутентификации SQL Server, укажите также параметр -U с именем пользователя и параметр -P с паролем пользователя, как показано ниже. Опять таки, подставьте свои значения этих параметров.
На следующем скриншоте можно увидеть, что я подключился к удаленному экземпляру SQL Server, работающему на Linux с помощью аутентификации SQL Server.
Бывают обстоятельства, когда вы не можете подключиться к SQL Server, например, из-за нехватки ресурсов. SQL Server имеет планировщик, предназначенный для обеспечения доступа только одному подключению во всех случаях. Это и есть выделенное подключение администратора (DAC). Вы не можете подключиться к DAC, как вы делаете это обычно с помощью SQL Server Management Studio, поскольку SSMS использует два подключения - одно для браузера объектов, а другое для окна запросов. В подобных случаях sqlcmd является одним из лучших вариантов для подключения к экземпляру SQL Server и выполнения необходимых действий, чтобы вернуть экземпляр в нормальное состояние.
Для подключения к экземпляру SQL Server с помощью DAC в sqlcmd, вам потребуется добавить параметр -A.
Если вы подключаетесь с логином Windows, то вызов sqlcmd будет таким:
Если вы хотите использовать логин SQL Server, то вы должны вызывать 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
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой