Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
sqlcmd je nástroj příkazového řádku pro ad hoc interaktivní spouštění příkazů Transact-SQL (T-SQL) a skriptů. Automatizuje také skriptovací úlohy T-SQL. Pokud chcete sqlcmd používat interaktivně nebo vytvářet soubory skriptů pro sqlcmd, měli byste rozumět jazyku T-SQL. sqlcmd můžete použít různými způsoby. Například:
Zadejte příkazy T-SQL z rozhraní příkazového řádku (CLI). Konzola vrátí výsledky.
Note
Ve Windows můžete otevřít okno příkazového řádku pomocí
cmdvyhledávacího pole Windows a vybrat příkazový řádek. V systému macOS a Linux můžete použít integrovaný emulátor terminálu.Napište
sqlcmddo konzole, poté zadejte seznam požadovaných možností a nakonec stiskněte Enter. Úplný seznam možností, které sqlcmd podporuje, naleznete v nástroji sqlcmd.Odešlete sqlcmd úlohu zadáním jednoho příkazu T-SQL, který se má provést, nebo nasměrováním nástroje na textový soubor, který obsahuje příkazy T-SQL ke spuštění. Výstup se směruje do textového souboru, ale můžete ho také zobrazit v konzole.
Režim SQLCMD v aplikaci SQL Server Management Studio (SSMS).
SQL Server Management Objects (Objekty pro správu SQL serveru).
Úlohy CmdExec agenta SQL Serveru
Běžné možnosti sqlcmd
Možnost serveru (
-S) identifikuje instanci SQL Serveru, ke které se sqlcmd připojí.Možnosti ověřování (
-E,-Ua-P) určují přihlašovací údaje, které sqlcmd používá pro připojení k instanci SQL Serveru.Note
Tato možnost
-Eje výchozí a není nutné ji zadávat.Vstupní možnosti (
-Q,-qa-i) identifikují umístění vstupu pro sqlcmd .Výstupní možnost (
-o) určuje soubor, ve kterém sqlcmd zapíše svůj výstup.
Připojení k nástroji sqlcmd
Připojte se k výchozí instanci pomocí ověřování systému Windows, abyste mohli interaktivně spouštět příkazy T-SQL:
sqlcmd -S <ComputerName>Note
V předchozím příkladu není zadaný,
-Eprotože se jedná o výchozí hodnotu. Sqlcmd se připojí k výchozí instanci pomocí ověřování systému Windows.Připojte se k pojmenované instanci pomocí ověřování systému Windows, abyste mohli interaktivně spouštět příkazy T-SQL:
sqlcmd -S <ComputerName>\<InstanceName>or
sqlcmd -S .\<InstanceName>Připojte se k pojmenované instanci pomocí ověřování systému Windows a zadáním vstupních a výstupních souborů:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>Připojte se k výchozí instanci na místním počítači pomocí ověřování systému Windows, spusťte dotaz a nechte sqlcmd spuštěné po dokončení dotazu:
sqlcmd -q "SELECT * FROM AdventureWorks2025.Person.Person"Připojte se k výchozí instanci na místním počítači pomocí ověřování systému Windows, spusťte dotaz, nasměrujte výstup na soubor a ukončete sqlcmd po dokončení dotazu:
sqlcmd -Q "SELECT * FROM AdventureWorks2025.Person.Person" -o MyOutput.txtPřipojte se k pojmenované instanci pomocí ověřování SQL Serveru, abyste mohli interaktivně spouštět příkazy T-SQL, přičemž sqlcmd vás vyzve k zadání hesla:
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>Tip
Pokud chcete zobrazit seznam možností, které nástroj sqlcmd podporuje, spusťte:
sqlcmd -?.
Interaktivní spouštění příkazů Transact-SQL pomocí sqlcmd
Pomocí nástroje sqlcmd interaktivně spusťte příkazy T-SQL v konzole. Pokud chcete interaktivně spouštět příkazy T-SQL pomocí sqlcmd, spusťte nástroj bez použití -Q, -q, -Znebo -i možnosti pro zadání vstupních souborů nebo dotazů. Například:
sqlcmd -S <ComputerName>\<InstanceName>
Když spustíte příkaz bez vstupních souborů nebo dotazů, sqlcmd se připojí k zadané instanci SQL Serveru. Potom zobrazí nový řádek s 1> a blikajícím podtržítkem nazvaným výzva sqlcmd.
1 označuje, že se jedná o první řádek příkazu T-SQL a sqlcmd výzva je bod, kdy se příkaz T-SQL spustí při jeho zadání.
Na výzvě sqlcmd můžete zadat jak příkazy T-SQL, tak příkazy sqlcmd , jako jsou GO a EXIT. Každý příkaz T-SQL přejde do vyrovnávací paměti označované jako mezipaměť příkazů. Tyto příkazy jsou odeslány na SQL Server po zadání příkazu GO a stisknutí klávesy Enter. Chcete-li ukončit sqlcmd, zadejte EXIT nebo QUIT na začátku nového řádku.
Pokud chcete vymazat mezipaměť příkazů, zadejte :RESET. Při psaní ctrl+C dojde k ukončení příkazu sqlcmd .
Ctrl+Jazyk C lze také použít k zastavení provádění mezipaměti příkazů po GO příkazu.
:ED Zadáním příkazu na příkazovém řádku sqlcmd upravte příkazy T-SQL. Editor se otevře a po úpravě příkazu T-SQL a zavření editoru se v příkazovém okně zobrazí revidovaný příkaz T-SQL. Zadáním GO spusťte revidovaný příkaz T-SQL.
Řetězce v uvozovkách
Můžete použít znaky, které jsou uzavřeny v uvozovkách bez dalšího předběžného zpracování, s tím rozdílem, že do řetězce můžete vložit uvozovky zadáním dvou po sobě jdoucích uvozovek. SQL Server považuje tuto posloupnost znaků za jednu uvozovku. (Překlad však probíhá na serveru.) Skriptovací proměnné nejsou rozšířeny, když se objeví uvnitř řetězce.
Například:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Tady je soubor výsledků.
Length: 5" 7'
Řetězce, které pokrývají více řádků
sqlcmd podporuje řetězce, které pokrývají více řádků. Například následující příkaz SELECT zahrnuje více řádků, ale po zadání GO se spustí jako jeden řetězec a stiskněte Enter.
SELECT <First line>
FROM <Second line>
WHERE <Third line>;
GO
Příklad interaktivního sqlcmd
Tento příklad ukazuje, co vidíte při interaktivním spuštění sqlcmd .
Když otevřete okno konzoly ve Windows, může se zobrazit výstup podobný následujícímu příkladu:
C:\Temp\>
Tento řádek znamená, že složka C:\Temp\ je aktuální složkou. Pokud zadáte název souboru, operační systém vyhledá soubor v této složce.
Zadejte sqlcmd pro připojení k výchozí instanci SQL Serveru v místním počítači. Obsah okna konzoly je následující:
C:\Temp>sqlcmd
1>
Tento výstup znamená, že jste připojeni k instanci SQL Serveru.
Sqlcmd je nyní připraven přijímat příkazy T-SQL a příkazy sqlcmd . Blikající podtržítko za 1> je výzva sqlcmd. Označuje umístění, ve kterém se zobrazují příkazy a příkazy, které zadáte. Teď zadejte USE AdventureWorks2025 a stiskněte Enter. Pak zadejte GO a stiskněte Enter. Obsah konzoly je následující:
sqlcmd
USE AdventureWorks2025;
GO
Tady je soubor výsledků.
Changed database context to 'AdventureWorks2025'.
1>
Když stisknete Enter, signalizuje sqlcmd, aby se spustil nový řádek. Stisknutím klávesy Enter po zadání GO dáte pokyn sqlcmd k odeslání USE AdventureWorks2025 příkazu k instanci serveru SQL.
sqlcmd pak vrátí zprávu, která indikuje, že USE příkaz byl úspěšně dokončen. Zobrazí nový 1> příkaz jako signál pro zadání nového příkazu nebo příkazu.
Následující příklad ukazuje, co konzola obsahuje, pokud zadáte příkaz SELECT, GO ke spuštění SELECT a EXIT k ukončení sqlcmd:
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Tady je soubor výsledků.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
Jakmile sqlcmd vygeneruje výstup, resetuje příkazový řádek sqlcmd a zobrazí 1>. Zadejte EXIT na výzvu 1> pro ukončení relace. Okno konzoly teď můžete zavřít zadáním jiného EXIT příkazu a klávesy Enter.
Vytvoření a dotazování kontejneru SQL Serveru
K vytvoření nové instance SQL Serveru v kontejneru můžete použít sqlcmd (Go).
sqlcmd (Go) zveřejňuje create příkaz pro zadání image kontejneru a zálohování SQL Serveru. Můžete rychle vytvořit instanci SQL Serveru pro účely vývoje, ladění a analýzy.
Následující příkaz ukazuje, jak zobrazit všechny dostupné možnosti pro vytvoření nového kontejneru SQL Serveru:
sqlcmd create mssql --help
Následující příkaz vytvoří novou instanci SQL Serveru pomocí nejnovější verze SQL Serveru 2025 (17.x) a pak obnoví ukázkovou databázi 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
Po vytvoření instance SQL Serveru použijte ke správě a dotazování sqlcmd (Go).
Následující příkaz potvrdí verzi instance, kterou jste vytvořili:
sqlcmd query "SELECT @@version"
Následující příkaz spustí interaktivní relaci s instancí, kterou jste vytvořili:
sqlcmd query
Následující příkaz zobrazí seznam připojovacích řetězců, které se mají použít pro připojení k instanci, kterou jste vytvořili:
sqlcmd config connection-strings
Pokud už kontejner nepotřebujete, odeberte ho pomocí následujícího příkazu:
sqlcmd delete
Spuštění Transact-SQL souborů skriptu pomocí sqlcmd
Ke spuštění souborů databázových skriptů použijte sqlcmd . Soubory skriptů jsou textové soubory, které obsahují kombinaci příkazů T-SQL, příkazy sqlcmd a skriptovací proměnné. Další informace o skriptování proměnných naleznete v tématu Použití sqlcmd se skriptovacími proměnnými. Sqlcmd pracuje s příkazy, příkazy a skriptovací proměnné v souboru skriptu podobným způsobem, jako funguje s příkazy a příkazy, které zadáte interaktivně. Hlavní rozdíl spočívá v tom, že sqlcmd čte vstupní soubor bez pozastavení a nečeká na zadání příkazů, příkazů a skriptovacích proměnných uživatelem.
Soubory databázových skriptů můžete vytvářet různými způsoby:
Interaktivně sestavovat a ladit sadu příkazů T-SQL v aplikaci SQL Server Management Studio a potom uložte obsah okna dotazu jako soubor skriptu.
Pomocí textového editoru, například Poznámkového bloku, vytvořte textový soubor, který obsahuje příkazy T-SQL.
Examples
A. Spuštění skriptu pomocí sqlcmd
Spusťte Poznámkový blok a zadejte následující příkazy T-SQL:
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Vytvořte složku s názvem MyFolder a uložte skript jako soubor MyScript.sql do složky C:\MyFolder. Zadáním následujícího příkazu v konzole spusťte skript a vložte výstup do MyOutput.txtMyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Tady je soubor výsledků.
Changed database context to 'AdventureWorks2025'.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B. Použití sqlcmd s vyhrazeným připojením pro správu
Následující příklad používá sqlcmd pro připojení k serveru, který má problém blokování pomocí vyhrazeného připojení správce (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
Tady je soubor výsledků.
session_id blocking_session_id
----------- --------------------`
62 64
(1 rows affected)
K ukončení procesu blokování použijte sqlcmd.
1> KILL 64;
2> GO
C. Použití sqlcmd ke spuštění uložené procedury
Následující příklad ukazuje, jak spustit uloženou proceduru pomocí sqlcmd. Vytvořte následující uloženou proceduru.
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
Na příkazovém řádku sqlcmd zadejte následující příkaz:
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. Použití sqlcmd pro údržbu databáze
Následující příklad ukazuje, jak použít sqlcmd pro úlohu údržby databáze. Vytvořte C:\Temp\BackupTemplate.sql s následujícím kódem.
USE master;
BACKUP DATABASE [$(db)] TO DISK = '$(bakfile)';
Do příkazového řádku sqlcmd zadejte následující kód:
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. Použití sqlcmd ke spuštění kódu na více instancích
Následující kód v souboru ukazuje skript, který se připojuje ke dvěma instancím. Před připojením ke druhé instanci si všimněte GO .
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
F. Vrácení výstupu XML
Následující příklad ukazuje, jak výstup XML vrací jako neformátovaný průběžný datový proud.
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. Použití sqlcmd v souboru skriptu systému Windows
Příkaz sqlcmd , například sqlcmd -i C:\Temp\InputFile.txt -o C:\Temp\OutputFile.txt, můžete spustit v .bat souboru spolu s jazykem VBScript. V tomto scénáři nepoužívejte interaktivní možnosti.
Nástroj sqlcmd musí být nainstalován v počítači, na kterém je soubor .bat spuštěn.
Nejprve v C:\Tempvytvořte následující čtyři soubory:
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
Pak spusťte C:\Temp\windowsscript.bat konzolu:
C:\Temp\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
H. Použití sqlcmd k nastavení šifrování ve službě Azure SQL Database
Sqlcmd můžete spustit na připojení k datům služby SQL Database a určit tak důvěryhodnost šifrování a certifikátu. K dispozici jsou dvě možnosti pro sqlcmd :
Přepínač
-Nje žádost klienta o šifrované připojení. Tato možnost je ekvivalentní možnosti ADO.NETENCRYPT = true.Přepínač
-Cnakonfiguruje klienta tak, aby implicitně důvěřoval certifikátu serveru a neověřil ho. Tato možnost je ekvivalentní možnosti ADO.NETTRUSTSERVERCERTIFICATE = true.
Služba SQL Database nepodporuje všechny možnosti SET dostupné v instanci SQL Serveru. Následující možnosti hlásí chybu, pokud je odpovídající možnost SET nastavená na ON nebo OFF:
SET ANSI_DEFAULTSSET ANSI_NULLSSET REMOTE_PROC_TRANSACTIONSSET ANSI_NULL_DEFAULT
SET Následující možnosti jsou zastaralé. Nevyvolají výjimky, ale nedají se použít:
SET CONCAT_NULL_YIELDS_NULLSET ANSI_PADDINGSET QUERY_GOVERNOR_COST_LIMIT
Syntax
Následující příklady odkazují na případy, kdy nastavení zprostředkovatele nativního klienta SQL Serveru zahrnuje:
ForceProtocolEncryption = FalseTrust Server Certificate = No
Připojení pomocí přihlašovacích údajů systému Windows a šifrování komunikace:
sqlcmd -E -N
Připojení pomocí přihlašovacích údajů systému Windows a certifikátu serveru důvěryhodnosti:
sqlcmd -E -C
Připojení pomocí přihlašovacích údajů systému Windows, šifrování komunikace a certifikátu serveru důvěryhodnosti:
sqlcmd -E -N -C
Následující příklady odkazují na případy, kdy nastavení zprostředkovatele nativního klienta SQL Serveru zahrnuje:
ForceProtocolEncryption = TrueTrustServerCertificate = Yes
Připojení pomocí přihlašovacích údajů systému Windows, šifrování komunikace a certifikátu serveru důvěryhodnosti:
sqlcmd -E
Připojení pomocí přihlašovacích údajů systému Windows, šifrování komunikace a certifikátu serveru důvěryhodnosti:
sqlcmd -E -N
Připojení pomocí přihlašovacích údajů systému Windows, šifrování komunikace a certifikátu serveru důvěryhodnosti:
sqlcmd -E -C
Připojení pomocí přihlašovacích údajů systému Windows, šifrování komunikace a certifikátu serveru důvěryhodnosti:
sqlcmd -E -N -C
Pokud je poskytovatelem specifikováno ForceProtocolEncryption = True, šifrování je povoleno, a to i v případě, že Encrypt=No v připojovacím řetězci.