- Install the SQL Server command-line tools sqlcmd and bcp on Linux
- Install tools on Linux
- Install tools on macOS
- Install tools on Docker
- Offline installation
- Next steps
- Contribute to SQL documentation
- Feedback
- SQL-Ex blog
- Что такое sqlcmd?
- Подключение sqlcmd к экземпляру по умолчанию SQL Server
- Подключение sqlcmd к экземпляру SQL Server, используя проверку подлинности Windows
- Подключение sqlcmd к экземпляру SQL Server, используя аутентификацию SQL Server
- Подключение sqlcmd к экземпляру SQL Server с помощью выделенного подключения администратора (DAC)
- Обратные ссылки
- Комментарии
Install the SQL Server command-line tools sqlcmd and bcp on Linux
The following steps install the command-line tools, Microsoft ODBC drivers, and their dependencies. The mssql-tools package contains:
- sqlcmd: Command-line query utility.
- bcp: Bulk import-export utility.
Install the tools for your platform:
This article describes how to install the command-line tools. If you are looking for examples of how to use sqlcmd or bcp, see the Next steps at the end of this article.
sqlcmd and bcp are available in mssql-tools18 for x64 and arm64 architectures. For a modern alternative across Linux, macOS, and Windows, see go-sqlcmd utility.
Install tools on Linux
These instructions are for installing the Microsoft ODBC 18 packages. For previous versions, see Install the Microsoft ODBC driver for SQL Server (Linux).
Use the following steps to install the mssql-tools18 on Red Hat Enterprise Linux.
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
sudo yum remove mssql-tools unixODBC-utf16 unixODBC-utf16-devel
sudo yum install -y mssql-tools18 unixodbc-dev
sudo yum check-update sudo yum update mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
To make sqlcmd and bcp accessible from the bash shell for interactive/non-login sessions, modify the PATH in the ~/.bashrc file with the following command:
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc
Use the following steps to install the mssql-tools18 on SUSE Linux Enterprise Server.
curl -O https://packages.microsoft.com/keys/microsoft.asc rpm --import microsoft.asc
zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
sudo zypper install -y mssql-tools18 unixodbc-dev
sudo zypper refresh sudo zypper update mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
To make sqlcmd or bcp accessible from the bash shell for interactive/non-login sessions, modify the PATH in the ~/.bashrc file with the following command:
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc
Use the following steps to install the mssql-tools18 on Ubuntu.
- Ubuntu 18.04 is supported starting with SQL Server 2019 (15.x) CU 3.
- Ubuntu 20.04 is supported starting with SQL Server 2019 (15.x) CU 10.
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update sudo apt-get install mssql-tools18 unixodbc-dev
sudo apt-get update sudo apt-get install mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
To make sqlcmd and bcp accessible from the bash shell for interactive/non-login sessions, modify the PATH in the ~/.bashrc file with the following command:
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc
Install tools on macOS
Install Homebrew if you don’t have it already:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
To install the tools for macOS El Capitan and later versions, use the following commands:
# brew untap microsoft/mssql-preview if you installed the preview version brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release brew update brew install mssql-tools18
Install tools on Docker
If you run SQL Server in a Docker container, the SQL Server command-line tools are already included in the SQL Server Linux container image. If you attach to a running container with an interactive bash shell, you can run the tools locally.
If you are creating a container with the SQL Server command-line tools, you should add ACCEPT_EULA=Y to the installation command to silently accept the EULA, and not interrupt image creation. An example final command as part of installation on an Ubuntu-based image is:
sudo ACCEPT_EULA=Y apt-get install mssql-tools18 unixodbc-dev
Offline installation
If your Linux machine doesn’t have access to the online repositories used in the previous sections, you can download the package files directly. These packages are located in the Microsoft repository, https://packages.microsoft.com.
If you successfully installed with the steps in the previous sections, you do not need to download or manually install the following package(s). This is only for the offline scenario.
sudo yum localinstall msodbcsql18-.rpm sudo yum localinstall mssql-tools18-.rpm
rpm -qpR msodbcsql18-.rpm rpm -qpR mssql-tools18-.rpm
sudo zypper install msodbcsql18-.rpm sudo zypper install mssql-tools18-.rpm
rpm -qpR msodbcsql18-.rpm rpm -qpR mssql-tools18-.rpm
sudo dpkg -i msodbcsql18_.deb sudo dpkg -i mssql-tools18_.deb
If this doesn’t work for your Debian package, you can inspect the required dependencies with the following commands:
dpkg -I msodbcsql18__amd64.deb | grep "Depends:" dpkg -I mssql-tools18__amd64.deb | grep "Depends:"
Next steps
For an example of how to use sqlcmd to connect to SQL Server and create a database, see one of the following quickstarts:
For an example of how to use bcp to bulk import and export data, see Bulk copy data to SQL Server on Linux.
Contribute to SQL documentation
Did you know that you can edit SQL content yourself? If you do so, not only do you help improve our documentation, but you also get credited as a contributor to the page.
Feedback
Submit and view feedback for
SQL-Ex blog
Если вам нужно выполнять команды 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, как на скриншоте ниже.
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
Обратные ссылки
Комментарии
Показывать комментарии Как список | Древовидной структурой
Автор не разрешил комментировать эту запись