Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Аналитическая платформа (PDW)
SQL база данных в Microsoft Fabric
sqlcmd — это программа командной строки для нерегламентированного интерактивного выполнения инструкций и скриптов Transact-SQL (T-SQL). Он также автоматизирует задачи скриптов T-SQL. Чтобы использовать sqlcmd интерактивно или создавать файлы скриптов для sqlcmd, следует понимать T-SQL. Sqlcmd можно использовать различными способами. Рассмотрим пример.
Введите инструкции T-SQL из интерфейса командной строки (CLI). Консоль возвращает результаты.
Note
В Windows можно открыть окно командной строки с помощью
cmdполя поиска Windows и выбрать командную строку. В macOS и Linux можно использовать встроенный эмулятор терминала.Введите
sqlcmdв консоль, укажите нужные параметры, а затем нажмите Enter. Полный список параметров, поддерживаемых sqlcmd , см. в программе sqlcmd.Отправьте задание sqlcmd либо путем указания одной инструкции T-SQL для выполнения, либо путем указания служебной программы в текстовый файл, содержащий инструкции T-SQL для выполнения. Выходные данные направляются в текстовый файл, но также могут отображаться в консоли.
Режим SQLCMD в среде SQL Server Management Studio (SSMS).
Объекты управления SQL Server (SMO).
Задания CmdExec агента SQL Server.
Распространенные параметры sqlcmd
Параметр сервера (
-S) определяет экземпляр SQL Server, к которому подключается sqlcmd .Параметры проверки подлинности (
-Eи-U-P) указывают учетные данные, которые sqlcmd использует для подключения к экземпляру SQL Server.Note
-EПараметр по умолчанию и не требуется указывать.Параметры ввода (
-Q,-qи-i) определяют расположение входных данных в sqlcmd.Параметр вывода (
-o) указывает файл, в котором sqlcmd записывает выходные данные.
Подключение к программе sqlcmd
Подключитесь к экземпляру по умолчанию с помощью проверки подлинности Windows, чтобы интерактивно выполнять запросы T-SQL.
sqlcmd -S <ComputerName>Note
В предыдущем примере не указано,
-Eтак как это значение по умолчанию. sqlcmd подключается к экземпляру по умолчанию с помощью проверки подлинности Windows.Подключитесь к именованному экземпляру с помощью аутентификации Windows для интерактивного выполнения инструкций T-SQL.
sqlcmd -S <ComputerName>\<InstanceName>or
sqlcmd -S .\<InstanceName>Подключитесь к именованному экземпляру с помощью проверки подлинности Windows и укажите входные и выходные файлы:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>Подключитесь к экземпляру по умолчанию на локальном компьютере с проверкой подлинности Windows, выполните запрос и оставьте sqlcmd запущенным после завершения запроса.
sqlcmd -q "SELECT * FROM AdventureWorks2025.Person.Person"Подключитесь к экземпляру по умолчанию на локальном компьютере с проверкой подлинности Windows, выполните запрос, перенаправите выходные данные в файл и закройте sqlcmd после завершения запроса:
sqlcmd -Q "SELECT * FROM AdventureWorks2025.Person.Person" -o MyOutput.txtПодключитесь к именованному экземпляру, используя проверку подлинности SQL Server для интерактивного запуска инструкций T-SQL с запросом от sqlcmd на ввод пароля.
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>Tip
Чтобы просмотреть список параметров, поддерживаемых служебной программой sqlcmd, выполните следующую команду:
sqlcmd -?
Интерактивный запуск инструкций Transact-SQL с помощью программы sqlcmd
Используйте программу sqlcmd в интерактивном режиме для выполнения инструкций T-SQL в консоли. Для интерактивного выполнения инструкций T-SQL с помощью sqlcmd запустите программу без использования -Q, -q-Zили -i параметров, чтобы указать входные файлы или запросы. Рассмотрим пример.
sqlcmd -S <ComputerName>\<InstanceName>
При выполнении команды без входных файлов или запросов sqlcmd подключается к указанному экземпляру SQL Server. Затем отображается новая строка с 1> последующим символом подчеркивания, который называется запросом sqlcmd . Первая строка инструкции T-SQL обозначается символом 1, а ввод команды начинается с приглашения sqlcmd, с которого начинается инструкция T-SQL при ее вводе.
В командной строке sqlcmd можно вводить инструкции T-SQL и команды sqlcmd, например GO и EXIT. Каждая инструкция T-SQL переходит в буфер, называемый кэшем инструкций. Эти выражения отправляются на SQL Server после ввода команды GO и нажатия клавиши ВВОД. Чтобы выйти из sqlcmd, введите EXIT или QUIT в начале новой строки.
Чтобы очистить кэш инструкций, введите :RESET. Ввод комбинации клавиш Ctrl+C приводит к выходу из sqlcmd.
Ctrl+C также можно использовать для остановки выполнения кэша инструкций после GO команды.
Введите команду в командной строке :EDsqlcmd , чтобы изменить инструкции T-SQL. Откроется редактор, после редактирования инструкции T-SQL и закрытия редактора в командном окне появится измененная инструкция T-SQL. Введите GO , чтобы запустить измененную инструкцию T-SQL.
Строки с кавычками
Вы можете использовать символы, заключенные в кавычки без дополнительной предварительной обработки, за исключением того, что можно вставить кавычки в строку, введя две последовательные кавычки. SQL Server обрабатывает эту последовательность символов как одну кавычку. (Однако перевод происходит на сервере.) Переменные скрипта не расширяются, когда они появляются внутри строки.
Рассмотрим пример.
sqlcmd
PRINT "Length: 5"" 7'";
GO
Вот набор результатов.
Length: 5" 7'
Многострочные строки
sqlcmd поддерживает строки, охватывающие несколько строк. Например, следующая SELECT инструкция охватывает несколько строк, но выполняется как одна строка после ввода GO и нажмите клавишу ВВОД.
SELECT <First line>
FROM <Second line>
WHERE <Third line>;
GO
Пример использования интерактивного sqlcmd
В этом примере показано, что отображается при интерактивном запуске sqlcmd .
При открытии окна консоли в Windows могут появиться выходные данные, аналогичные следующему примеру:
C:\Temp\>
Эта строка означает, что папка C:\Temp\ является текущей папкой. Если указать имя файла, операционная система ищет файл в этой папке.
Введите sqlcmd , чтобы подключиться к экземпляру SQL Server по умолчанию на локальном компьютере. Содержимое окна консоли выглядит следующим образом:
C:\Temp>sqlcmd
1>
Это означает, что вы подключены к экземпляру SQL Server.
sqlcmd теперь готов принимать инструкции T-SQL и команды sqlcmd . Мигающее подчеркивание после 1> является приглашением sqlcmd. Он указывает на место, где отображаются вводимые вами инструкции и команды. Теперь введите USE AdventureWorks2025 и нажмите клавишу ВВОД. Затем введите GO и нажмите клавишу ВВОД. Содержимое консоли выглядит следующим образом:
sqlcmd
USE AdventureWorks2025;
GO
Вот набор результатов.
Changed database context to 'AdventureWorks2025'.
1>
При нажатии клавиши ВВОД он сигнализирует sqlcmd о запуске новой строки. Нажатие клавиши ВВОД после ввода GO сигнализирует sqlcmd отправить USE AdventureWorks2025 инструкцию в экземпляр SQL Server.
Затем sqlcmd возвращает сообщение, указывающее, что USE инструкция успешно завершена. В нем отображается новая строка 1>, как сигнал для ввода новой инструкции или команды.
В следующем примере показано, что содержит консоль, если ввести команду SELECT, выполнить GO, и EXIT для выхода из sqlcmd:
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Вот набор результатов.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
После создания выходных данных sqlcmd сбрасывает приглашение sqlcmd и отображает 1>. Чтобы выйти из сеанса, введите EXIT в командной строке 1>. Теперь окно консоли можно закрыть, введя другую EXIT команду, а затем нажмите Enter.
Создание и запрос контейнера SQL Server
Для создания нового экземпляра SQL Server в контейнере можно использовать sqlcmd (Go).
sqlcmd (Go) предоставляет create инструкцию для указания образа контейнера и резервного копирования SQL Server. Вы можете быстро создать экземпляр SQL Server для целей разработки, отладки и анализа.
В следующей команде показано, как просмотреть все доступные параметры для создания нового контейнера SQL Server:
sqlcmd create mssql --help
Следующая команда создает новый экземпляр SQL Server с помощью последней версии SQL Server 2025 (17.x), а затем восстанавливает образец базы данных Wide World Importers:
sqlcmd create mssql --accept-eula --tag 2025-latest --using https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak
После создания экземпляра SQL Server используйте sqlcmd (Go) для управления и запроса.
Следующая команда подтверждает версию экземпляра, который вы создали:
sqlcmd query "SELECT @@version"
Следующая команда запускает интерактивный сеанс с созданным экземпляром:
sqlcmd query
Следующая команда перечисляет строки подключения, которые можно использовать для подключения к этому созданному экземпляру.
sqlcmd config connection-strings
Используйте следующую команду, чтобы удалить контейнер, если он больше не нужен:
sqlcmd delete
Выполнение файлов скриптов Transact-SQL с помощью sqlcmd
Используйте sqlcmd для запуска файлов скриптов базы данных. Файлы скриптов — это текстовые файлы, содержащие сочетание инструкций T-SQL, команд sqlcmd и переменных скриптов. Дополнительные сведения о том, как использовать переменные в скриптах, см. в разделе Использование sqlcmd с переменными скриптов. sqlcmd работает с инструкциями, командами и переменными скриптов в файле скрипта таким образом, как это работает с инструкциями и командами, которые вы вводите в интерактивном режиме. Главное отличие заключается в том, что программа sqlcmd без остановок считывает входной файл, а не ждет, пока пользователь введет инструкции, команды или переменные скрипта.
Файлы скриптов базы данных можно создавать разными способами:
Интерактивная сборка и отладка набора инструкций T-SQL в SQL Server Management Studio, а затем сохраните содержимое окна запроса в виде файла скрипта.
Создайте текстовый файл, содержащий инструкции T-SQL с помощью текстового редактора, например Блокнота.
Examples
A. Запуск скрипта с помощью sqlcmd
Запустите Блокнот и введите следующие инструкции T-SQL:
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Создайте папку с именем MyFolder и сохраните скрипт в виде файла MyScript.sql в папке C:\MyFolder. Введите следующую команду в консоли, чтобы запустить скрипт и поместить выходные данные в MyOutput.txtMyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Вот набор результатов.
Changed database context to 'AdventureWorks2025'.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B. Использование sqlcmd с выделенным административным подключением
В следующем примере sqlcmd используется для подключения к серверу с блокировкой с помощью выделенного подключения администратора (DAC).
C:\Temp\>sqlcmd -S ServerName -A
1> SELECT session_id, blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
2> GO
Вот набор результатов.
session_id blocking_session_id
----------- --------------------`
62 64
(1 rows affected)
Используйте sqlcmd , чтобы завершить процесс блокировки.
1> KILL 64;
2> GO
C. Использование sqlcmd для выполнения хранимой процедуры
В следующем примере показано, как выполнить хранимую процедуру с помощью sqlcmd. Создайте следующую хранимую процедуру.
USE AdventureWorks2025;
GO
IF OBJECT_ID('dbo.ContactEmailAddress', 'P') IS NOT NULL
DROP PROCEDURE dbo.ContactEmailAddress;
GO
CREATE PROCEDURE dbo.ContactEmailAddress (
@FirstName NVARCHAR(50),
@LastName NVARCHAR(50)
)
AS
SET NOCOUNT ON;
SELECT EmailAddress
FROM Person.Person
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF;
GO
В командной строке sqlcmd введите следующую команду:
C:\Temp\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(FirstName),$(LastName)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D. Использование sqlcmd для обслуживания базы данных
В следующем примере показано, как использовать sqlcmd для задачи обслуживания базы данных. Создайте C:\Temp\BackupTemplate.sql со следующим кодом.
USE master;
BACKUP DATABASE [$(db)] TO DISK = '$(bakfile)';
В командной строке sqlcmd введите следующий код:
C:\Temp\>sqlcmd
1> :connect <server>
Sqlcmd: Successfully connected to server <server>.
1> :setvar db msdb
1> :setvar bakfile C:\Temp\msdb.bak
1> :r C:\Temp\BackupTemplate.sql
2> GO
Changed database context to 'master'.
Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.
Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.
BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)
E. Использование sqlcmd для запуска кода на нескольких экземплярах
Код в файле ниже показывает скрипт, который подключается к двум экземплярам. Обратите внимание на GO перед подключением ко второму экземпляру.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
F. Возврат выходных данных XML
В следующем примере показано, как выходные данные XML возвращаются в виде неформатированного непрерывного потока.
C:\Temp\>sqlcmd -d AdventureWorks2025
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
G. Использование sqlcmd в файле скрипта Windows
Вы можете запустить команду sqlcmd , например sqlcmd -i C:\Temp\InputFile.txt -o C:\Temp\OutputFile.txt, в .bat файле вместе с VBScript. Не используйте интерактивные параметры в этом сценарии.
sqlcmd необходимо установить на компьютере, на котором выполняется .bat файл.
Сначала создайте следующие четыре файла в C:\Temp:
C:\Temp\badscript.sql
SELECT batch_1_this_is_an_error GO SELECT 'batch #2' GOC:\Temp\goodscript.sql
SELECT 'batch #1'; GO SELECT 'batch #2'; GOC:\Temp\returnvalue.sql
:exit(select 100)C:\Temp\windowsscript.bat
@echo off echo Running badscript.sql sqlcmd -i badscript.sql -b -o out.log if not errorlevel 1 goto next1 echo == An error occurred :next1 echo Running goodscript.sql sqlcmd -i goodscript.sql -b -o out.log if not errorlevel 1 goto next2 echo == An error occurred :next2 echo Running returnvalue.sql sqlcmd -i returnvalue.sql -o out.log echo SQLCMD returned %errorlevel% to the command shell :exit
Затем выполните команду C:\Temp\windowsscript.bat в консоли:
C:\Temp\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
H. Использование sqlcmd для задания шифрования в База данных SQL Azure
Вы можете запустить sqlcmd в подключении к данным базы данных SQL, чтобы указать шифрование и доверие сертификатов. Доступны два варианта sqlcmd :
Параметр
-N— это запрос клиента для зашифрованного подключения. Этот параметр аналогичен параметру ADO.NETENCRYPT = true.Переключение
-Cнастраивает клиент для неявного доверия сертификату сервера и не проверяет его. Этот параметр аналогичен параметру ADO.NETTRUSTSERVERCERTIFICATE = true.
Служба базы данных SQL не поддерживает все параметры SET, которые доступны в экземпляре SQL Server. Следующие параметры вызывают ошибку, если соответствующий параметр SET имеет значение ON или OFF:
SET ANSI_DEFAULTSSET ANSI_NULLSSET REMOTE_PROC_TRANSACTIONSSET ANSI_NULL_DEFAULT
Следующие SET параметры устарели. Они не вызывают исключения, но не могут использоваться:
SET CONCAT_NULL_YIELDS_NULLSET ANSI_PADDINGSET QUERY_GOVERNOR_COST_LIMIT
Syntax
В следующих примерах приведены случаи, когда параметры поставщика собственных клиентов SQL Server включают:
ForceProtocolEncryption = FalseTrust Server Certificate = No
Подключение с использованием учетных данных Windows и шифрование соединения:
sqlcmd -E -N
Подключение с использованием учетных данных Windows и доверие сертификату сервера:
sqlcmd -E -C
Подключитесь с помощью учетных данных Windows, шифрования связи и сертификата сервера доверия:
sqlcmd -E -N -C
В следующих примерах приведены случаи, когда параметры поставщика собственных клиентов SQL Server включают:
ForceProtocolEncryption = TrueTrustServerCertificate = Yes
Подключитесь с помощью учетных данных Windows, шифрования связи и сертификата сервера доверия:
sqlcmd -E
Подключитесь с помощью учетных данных Windows, шифрования связи и сертификата сервера доверия:
sqlcmd -E -N
Подключитесь с помощью учетных данных Windows, шифрования связи и сертификата сервера доверия:
sqlcmd -E -C
Подключитесь с помощью учетных данных Windows, шифрования связи и сертификата сервера доверия:
sqlcmd -E -N -C
Если поставщик указывает ForceProtocolEncryption = True, шифрование включено, даже если Encrypt=No в строке подключения.