Соединение с помощью sqlcmd
Служебная программа sqlcmd доступна с Microsoft ODBC Driver for 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
Разрешает доверять сертификату сервера.
-ddatabase_name
Выдача инструкции USE database_name при запуске sqlcmd .
-D
Значение, передаваемое в параметр sqlcmd -S, интерпретируется как имя источника данных (DSN). Дополнительные сведения см. в разделе «Поддержка имени DSN в sqlcmd и bcp » в конце этой статьи.
-e
Записывает входные скрипты на стандартное устройство вывода (stdout).
-E
Использование доверительного соединения (встроенной проверки подлинности). Дополнительные сведения о создании доверительных соединений, в которых используется встроенная проверка подлинности, из клиента Linux или macOS см. в статье Использование встроенной проверки подлинности.
-fкодовая_страница | i:кодовая_страница[,o:кодовая_страница] | o:кодовая_страница[,i:кодовая_страница]
Задает входные и выходные кодовые страницы. Номер кодовой страницы — это числовое значение, которое определяет установленную кодовую страницу Linux. Доступно с 17.5.1.1.
-G
Клиент использует этот переключатель при подключении к базе данных SQL или Azure Synapse Analytics, чтобы указать, что проверка подлинности пользователя выполняется с помощью Azure Active Directory. Его можно объединить с параметром -P, чтобы использовать проверку подлинности токена доступа (версия 17.8+). Этот параметр задает переменную скрипта SQLCMDUSEAAD = true программы sqlcmd . Для использования параметра -G требуется sqlcmd версии не ниже 17.6. Чтобы определить версию, выполните sqlcmd -? .
Параметр -G применяется только для Базы данных SQL Azure и Azure Synapse Analytics. Интерактивная проверка подлинности AAD в Linux и macOS сейчас не поддерживается. Для встроенной проверки подлинности AAD требуется драйвер Microsoft ODBC 17 for SQL Server версии 17.6.1 или более поздней, а также правильно настроенная среда Kerberos.
-hчисло_строк
Указывает количество строк для печати между заголовками столбцов.
-H
Указывает имя рабочей станции.
-iвходной_файл[,входной_файл[. ]]
Указывает файл, содержащий пакет инструкций или хранимых процедур SQL.
-I
Установка для параметра подключения SET QUOTED_IDENTIFIER значения «Вкл».
-k
Удаляет или заменяет управляющие символы.
-Kapplication_intent
Объявляет тип рабочей нагрузки приложения при соединении с сервером. Единственным поддерживаемым в данное время значением является ReadOnly. Если параметр -K не указан, sqlcmd не поддерживает подключение ко вторичной реплике в группе доступности Always On. См. подробнее об обеспечении высокой доступности и аварийного восстановления с помощью драйвера ODBC для Linux и macOS.
CTP-версия для SUSE Linux не поддерживает параметр -K. Однако вы можете указать ключевое слово ApplicationIntent=ReadOnly в файле DSN, передаваемом в sqlcmd . Дополнительные сведения см. в разделе «Поддержка имени DSN в sqlcmd и bcp » в конце этой статьи.
-lвремя_ожидания
Указание времени ожидания (в секундах) для входа в 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запрос_командной_строки
При запуске программы sqlcmd выполняется запрос, но выход из программы по завершении его выполнения не производится.
-Qзапрос_командной_строки
Выполнение запроса при запуске программы sqlcmd . sqlcmd завершает работу после выполнения запроса.
-r
Перенаправляет сообщения об ошибках в stderr.
-R
Устанавливает использование драйвером региональных параметров клиента для преобразования данных денежного формата, формата даты и времени в символьные данные. В настоящее время используется только форматирование en_US (Английский (США)).
-sсимвол_разделителя_столбцов
Задает символ-разделитель столбцов.
-S [протокол:] сервер[,порт]
Задать экземпляр SQL Server, к которому требуется подключиться, или имя DSN при использовании с параметром -D. Драйвер 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пароль
Изменяет пароль.
-Zпароль
Изменение пароля и выход
Доступные команды
В текущем выпуске доступны следующие команды:
Недоступные параметры
В текущем выпуске недоступны следующие параметры:
-A
Входит на SQL Server посредством выделенного административного соединения. Сведения об использовании выделенного административного соединения см. в разделе Указания по программированию.
-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 в качестве входного файла:
Недоступные команды
В текущем выпуске недоступны следующие команды:
Поддержка имени 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 только запись 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 Driver 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» .