Поделиться через


Соединение с помощью sqlcmd

Скачать драйвер ODBC

Служебная программа sqlcmd доступна с драйвером Microsoft ODBC для SQL Server на Linux и macOS.

В следующих командах показано, как использовать проверку подлинности Windows (Kerberos) и проверку подлинности SQL Server соответственно:

sqlcmd -E -Sxxx.xxx.xxx.xxx
sqlcmd -Sxxx.xxx.xxx.xxx -Uxxx -Pxxx

Доступные варианты

В sqlcmd в Linux и macOS доступны следующие параметры:

-?
Отображение использования sqlcmd.

-a
Запрашивает размер пакета.

-b
Завершение пакетного задания при возникновении ошибки.

-c конец_пакета
Указывает признак конца пакета.

-C
Разрешает доверять сертификату сервера.

-d имя_базы_данных
Выдача инструкции USE database_name при запуске sqlcmd.

-D
Значение, передаваемое в параметр sqlcmd -S, интерпретируется как имя источника данных (DSN). Дополнительные сведения см. в разделе "Поддержка имени DSN в sqlcmd и bcp" в конце этой статьи.

-e
Записывает входные скрипты на стандартное устройство вывода (stdout).

-E
Использование доверительного соединения (встроенной проверки подлинности). Дополнительные сведения о создании доверительных соединений, в которых используется встроенная проверка подлинности, из клиента Linux или macOS см. в статье Использование встроенной проверки подлинности.

-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Задает входные и выходные кодовые страницы. Номер кодовой страницы — это числовое значение, которое определяет установленную кодовую страницу Linux. Доступно с 17.5.1.1.

-G
Этот параметр используется клиентом при подключении к База данных SQL Azure, Управляемый экземпляр SQL Azure или Azure Synapse Analytics, чтобы указать, что пользователь проходит проверку подлинности с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory). Его можно объединить с параметром -P, чтобы использовать проверку подлинности токена доступа (версия 17.8+). Этот параметр задает переменную скрипта SQLCMDUSEAAD = true программы sqlcmd . Для использования параметра -G требуется sqlcmd версии не ниже 17.6. Чтобы определить версию, выполните sqlcmd -?.

Внимание

Параметр -G применяется только к База данных SQL Azure, Управляемый экземпляр SQL Azure и Azure Synapse Analytics.

Интерактивная проверка подлинности Microsoft Entra в настоящее время не поддерживается в Linux или macOS. Для интегрированной проверки подлинности Microsoft Entra требуется Microsoft ODBC Driver 17 для SQL Server версии 17.6.1 или более поздней и правильно настроенная среда Kerberos.

-h number_of_rows
Указывает количество строк для печати между заголовками столбцов.

-H
Указывает имя рабочей станции.

-i input_file[,input_file[,...]]
Указывает файл, содержащий пакет инструкций или хранимых процедур SQL.

-I
Установка для параметра подключения SET QUOTED_IDENTIFIER значения "Вкл".

-k
Удаляет или заменяет управляющие символы.

-K намерение_приложения
Объявляет тип рабочей нагрузки приложения при соединении с сервером. Единственным поддерживаемым в данное время значением является ReadOnly. Если параметр -K не указан, sqlcmd не поддерживает подключение ко вторичной реплике в группе доступности Always On. См. подробнее об обеспечении высокой доступности и аварийного восстановления с помощью драйвера ODBC для Linux и macOS.

Примечание.

CTP-версия для SUSE Linux не поддерживает параметр-K. Однако вы можете указать ключевое слово ApplicationIntent=ReadOnly в файле DSN, передаваемом в sqlcmd. Дополнительные сведения см. в разделе "Поддержка имени DSN в sqlcmd и bcp" в конце этой статьи.

-l timeout
Указание времени ожидания (в секундах) для входа в sqlcmd при попытке подключения к серверу.

-m уровень_ошибки
Управляет сообщениями об ошибках, которые передаются в stdout.

-M отработка_отказа_в_сети_с_несколькими_подсетями
Всегда указывайте -M при подключении к прослушивателю группы доступности группы доступности SQL Server 2012 (11.x) или экземпляру отказоустойчивого кластера SQL Server 2012 (11.x). -M позволяет ускорить обнаружение обработок отказа и подключение к активному (в данный момент) серверу. Если параметр -M не указан, значит, -M отключен. Дополнительные сведения о группах доступности Always On см. в руководстве по обеспечению высокого уровня доступности и аварийному восстановлению для драйвера ODBC для Linux и macOS.

Примечание.

CTP-версия для SUSE Linux не поддерживает параметр -M. Однако вы можете указать ключевое слово MultiSubnetFailover=Yes в файле DSN, передаваемом в sqlcmd. Дополнительные сведения см. в разделе "Поддержка имени DSN в sqlcmd и bcp" в конце этой статьи.

-N[s|m|o]
Установите режим шифрования подключения Strict, Mandatory или Optional соответственно. Если значение не указано, по умолчанию используется режим Mandatory. ([s|m|o] добавлено в sqlcmd 18.0)

-o выходной_файл
Определение файла, в который поступают выходные данные программы sqlcmd.

-p
Выводит статистику производительности для каждого результирующего набора.

-P
Указывает пароль пользователя. При использовании с параметром -G без параметра -U указывает файл, содержащий токен доступа (версия 17.8+). Файл токена должен быть в формате UTF-16LE (без метки порядка байтов).

Маркеры доступа можно получить с помощью различных методов. Важно убедиться, что маркер доступа имеет побайтовое соответствие, так как он будет отправлен как есть. Ниже приведен пример команды, которая позволяет получить маркер доступа. Команда использует команды Azure CLI и Linux и сохраняет их в файл в правильном формате. Если используемая по умолчанию схема кодирования системы или терминала — не ASCII или UTF-8, возможно, вам потребуется изменить параметры iconv. Защитите результирующий файл и удалите его, если он больше не нужен.

az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile

-q commandline_query
При запуске программы sqlcmd выполняется запрос, но выход из программы по завершении его выполнения не производится.

-Q commandline_query
Выполнение запроса при запуске программы sqlcmd. sqlcmd завершает работу после выполнения запроса.

-r
Перенаправляет сообщения об ошибках в stderr.

-R
Устанавливает использование драйвером региональных параметров клиента для преобразования данных денежного формата, формата даты и времени в символьные данные. В настоящее время используется только форматирование en_US (Английский (США)).

-s column_separator_char
Задает символ-разделитель столбцов.

-S [протокол:] сервер[,порт]
Укажите экземпляр SQL Server для подключения или, если используется -D, dsN. Драйвер ODBC для Linux и macOS требует -S. Единственным допустимым протоколом является TCP.

-t время_ожижания_запроса
Задает число секунд времени ожидания команды (или инструкции SQL).

-u
Указание того, что файл output_file хранится в формате Юникод, независимо от формата файла input_file.

-U
login_id — указание идентификатора входа пользователя.

-V уровень_серьезности_ошибки
Управляет степенью серьезности, используемой для задания переменной ERRORLEVEL.

-w ширина_столбца
Задает ширину экрана для вывода.

-W
Удаляет конечные пробелы в столбце.

-x
Отключение подстановки переменных

-X
Отключает команды, скрипт запуска и переменные среды

-y изменяемая_ширина_отображения
Установка переменной скрипта sqlcmd SQLCMDMAXFIXEDTYPEWIDTH.

-Y фиксированная_ширина_отображения
Установка переменной скрипта sqlcmd SQLCMDMAXVARTYPEWIDTH.

-z password
Изменяет пароль.

-Z password
Изменение пароля и выход

Доступные команды

В текущем выпуске доступны следующие команды:

  • [:]!!

  • Взаимодействие.

  • Ошибка.

  • [:]EXIT

  • GO [count]

  • Help (Справка):

  • Списки:

  • :Listvar

  • :On Error

  • :Out

  • :Perftrace

  • [:]QUIT

  • :r

  • :RESET

  • :setvar

Недоступные параметры

В текущем выпуске недоступны следующие параметры:

-A
Войдите в SQL Server с помощью выделенного подключения администратора (DAC). Сведения об использовании выделенного административного соединения см. в разделе Указания по программированию.

-L
Выводит список локально настроенных серверов и имена серверов, осуществляющих вещание в сети.

-v
Создание переменной скрипта sqlcmd, которую можно использовать в сценарии sqlcmd.

Можно использовать следующий альтернативный метод: поместите параметры в один файл, который затем можно добавить к другому файлу. Этот метод позволит использовать файл параметров для замены значений. Например, создайте файл с именем a.sql (файл параметров) со следующим содержимым:

:setvar ColumnName object_id
:setvar TableName sys.objects

Затем создайте файл b.sql с параметрами для замены:

SELECT $(ColumnName) FROM $(TableName)

В командной строке совместите a.sql и b.sql в c.sql с помощью следующих команд:

cat a.sql > c.sql

cat b.sql >> c.sql

Запустите sqlcmd и используйте c.sql в качестве входного файла:

sqlcmd -S<...> -P<..> -U<..> -I c.sql

Недоступные команды

В текущем выпуске недоступны следующие команды:

  • :ED;

  • :ServerList

  • :XML.

Поддержка имени DSN в sqlcmd и bcp

Вы можете указать имя источника данных (DSN) вместо имени сервера в sqlcmd или параметре bcp -S (или в команде sqlcmd :Connect), если зададите параметр -D. -D вызывает sqlcmd или bcp для подключения к серверу, указанному в имени DSN, с помощью параметра -S.

Системные имена DSN хранятся в файле odbc.ini в каталоге ODBC SysConfigDir (/etc/odbc.ini в стандартных установках). Пользовательские имена DSN хранятся в .odbc.ini в домашнем каталоге пользователя (~/.odbc.ini).

В системах Windows системные и пользовательские имена DSN хранятся в реестре и управляются через файл odbcad32.exe. Файловые DSN не поддерживаются bcp и sqlcmd.

Список записей, поддерживаемых драйвером, см. в статье Ключевые слова и атрибуты строки подключения и имени DSN.

В имени DSN только запись DRIVER является обязательной, но, чтобы подключиться к удаленному серверу, sqlcmd или bcp требуется значение в элементе SERVER. Если элемент SERVER пуст или отсутствует в DSN, sqlcmd и bcp попытаются подключиться к экземпляру по умолчанию в локальной системе.

При использовании bcp в системах Windows SQL Server 2017 (14.x) и более ранних версий требуется драйвер SQL Native Client 11 (sqlncli11.dll), в то время как SQL Server 2019 (15.x) и выше требуется драйвер Microsoft ODBC 17 для драйвера SQL Server (msodbcsql17.dll).

Если указать один и тот же параметр и в имени DSN, и в командной строке sqlcmd или bcp, значение в командной строке имеет приоритет перед значением DSN. Например, если имя DSN содержит запись DATABASE, а командная строка sqlcmd включает параметр -d, используется значение, передаваемое в -d. Если в имени DSN указано Trusted_Connection=yes, используется проверка подлинности Kerberos, а имя пользователя (–U) и пароль (–P), если они заданы, игнорируются.

Существующие сценарии, вызывающие isql, можно изменить для использования sqlcmd, определив следующий псевдоним: alias isql="sqlcmd -D".

См. также

Подключение с помощью bcp
Заметки о выпуске