Med verktyget sqlcmd kan du ange Transact-SQL-instruktioner, systemprocedurer och skriptfiler via olika lägen:
Vid kommandotolken.
I Frågeredigeraren i SQLCMD-läge.
I en Windows-skriptfil.
I ett jobbsteg för operativsystemet (cmd.exe) i ett SQL Server Agent-jobb.
Anteckning
Även om Microsoft Entra ID är det nya namnet för Azure Active Directory (Azure AD), för att förhindra avbrott i befintliga miljöer, finns Azure AD kvar i vissa hårdkodade element som UI-fält, anslutningsproviders, felkoder och cmdletar. I den här artikeln är de två namnen utbytbara.
Ta reda på vilken version du har installerat
Det finns två versioner av sqlcmd:
Den go-mssqldb-baserade sqlcmd, ibland formaterad som go-sqlcmd. Den här versionen är ett fristående verktyg som du kan ladda ned oberoende av SQL Server.
DET ODBC-baserade sqlcmd, tillgängligt med SQL Server eller Microsoft Command Line Utilities och en del av mssql-tools-paketet i Linux.
För att fastställa vilken version du har installerat kör du följande -instruktion på kommandoraden:
När du använder den nya versionen av sqlcmd (Go), liknar utdata följande exempel:
Version: 1.3.1
Kontrollera version
Du kan använda sqlcmd --version för att avgöra vilken version som är installerad. Du bör ha minst version 1.0.0 installerat.
Om du använder sqlcmd (ODBC) liknar utdata följande exempel:
Microsoft (R) SQL Server Command Line Tool
Version 16.0.4025.1 NT
Copyright (C) 2022 Microsoft Corporation. All rights reserved.
Kontrollera version
Du kan ha flera versioner av sqlcmd (ODBC) installerade på datorn. Se till att du använder rätt version. Du bör ha minst version 15.0.4298.1 installerad.
Always Encrypted (-g) och Microsoft Entra-autentisering (-G) kräver minst version 13.1.
Anteckning
Information om SQL Server 2014 (12.x) och tidigare versioner finns i sqlcmd-verktyg.
Om du installerar sqlcmd (Go) via en pakethanterare ersätts sqlcmd (ODBC) med sqlcmd (Go) i din miljösökväg. Alla aktuella kommandoradssessioner måste stängas och öppnas igen för att detta ska börja gälla.
sqlcmd (ODBC) tas inte bort och kan fortfarande användas genom att ange den fullständiga sökvägen till det körbara programmet. Du kan också uppdatera variabeln PATH för att ange vilken som har företräde. Om du vill göra det i Windows 11 öppnar du Systeminställningar och går till Om > Avancerade systeminställningar. När Systemegenskaper öppnas väljer du knappen Miljövariabler. I den nedre halvan, under Systemvariabler, välj Sökväg och välj sedan Redigera. Om platsen sqlcmd (Go) sparas till (C:\Program Files\sqlcmd är standard) och förekommer före C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn, används sqlcmd (Go). Du kan reversera ordningen för att göra sqlcmd (ODBC) till standard igen.
sqlcmd (Go) kan installeras plattformsoberoende på Microsoft Windows, macOS och Linux. Versioner som är nyare än 1.6 kanske inte är tillgängliga i alla pakethanterare. Det finns ännu inget beräknat datum för deras tillgänglighet.
Ladda ned lagringsplatsens konfigurationsfil, där fedora/32-segmentet kan vara opensuse/42.3, rhel/8eller sles/15. Om versionen av operativsystemet inte direkt motsvarar något av dessa alternativ kanske du kan använda en lagringsplatskonfigurationsfil från en version.
Kommandoradsverktygen är Allmän tillgänglighet (GA), men de släpps med installationspaketet för SQL Server 2019 (15.x).
Versionsinformation
Versionsnummer: 15.0.4298.1
Versionsnummer: 15.0.4298.1
Utgivningsdatum: 7 april 2023
Anteckning
Den sqlcmd--nerladdning som tillhandahålls här kanske inte har samma utgåva och versionsnummer som sqlcmd, installerad med den senaste kumulativa uppdateringen för SQL Server (CU). Detta är ett förväntat beteende. Den här versionen innehåller alla korrigeringar som ingår i den senaste CU.
sqlcmd (ODBC) stöder autentisering med Microsoft Entra ID (tidigare Azure Active Directory), inklusive multifaktorautentisering (MFA) för Azure SQL Database, Azure Synapse Analytics och Always Encrypted-funktioner.
Systemkrav
Windows 7 till Windows 11
Windows Server 2008 till och med Windows Server 2022
Om du vill köra SQLCMD-instruktioner i Azure Data Studioväljer du Aktivera SQLCMD- i redigeringsprogrammets verktygsfält.
SQL Server Management Studio (SSMS)
Om du vill köra SQLCMD-instruktioner i SQL Server Management Studio (SSMS) väljer du SQLCMD-läge i listrutan på den översta navigeringsmenyn.
SSMS använder Microsoft .NET Framework-SqlClient för körning i vanligt läge och SQLCMD-läge i Frågeredigeraren. När sqlcmd- körs från kommandoraden använder sqlcmd ODBC-drivrutinen. Eftersom olika standardalternativ kan gälla kan du se olika beteenden när du kör samma fråga i SSMS i SQLCMD-läge och i verktyget sqlcmd.
Usage:
sqlcmd [flags]
sqlcmd [command]
Examples:
# Install/Create, Query, Uninstall SQL Server
sqlcmd create mssql --accept-eula --using https://aka.ms/AdventureWorksLT.bak
sqlcmd open ads
sqlcmd query "SELECT @@version"
sqlcmd delete
# View configuration information and connection strings
sqlcmd config view
sqlcmd config cs
Available Commands:
completion Generate the autocompletion script for the specified shell
config Modify sqlconfig files using subcommands like "sqlcmd config use-context mssql"
create Install/Create SQL Server, Azure SQL, and Tools
delete Uninstall/Delete the current context
help Help about any command
open Open tools (e.g ADS) for current context
query Run a query against the current context
start Start current context
stop Stop current context
Flags:
-?, --? help for backwards compatibility flags (-S, -U, -E etc.)
-h, --help help for sqlcmd
--sqlconfig string configuration file (default "/Users/<currentUser>/.sqlcmd/sqlconfig")
--verbosity int log level, error=0, warn=1, info=2, debug=3, trace=4 (default 2)
--version print version of sqlcmd
Use "sqlcmd [command] --help" for more information about a command.
Mer detaljerad information om sqlcmd syntax och användning finns i ODBC sqlcmd syntax.
Ändringar som bryter bakåtkompatibilitet från sqlcmd (ODBC)
I tidigare versioner av sqlcmd (Go) togs -P-växeln bort tillfälligt och lösenord för SQL Server-autentisering kunde endast anges via följande mekanismer:
Miljövariabeln SQLCMDPASSWORD
Kommandot :CONNECT
När användaren uppmanas att göra det kan han eller hon skriva lösenordet för att slutföra en anslutning
-r kräver ett argument för 0 eller 1
-R växeln tas bort.
-I växeln tas bort. Om du vill inaktivera beteendet för citerade identifierare lägger du till SET QUOTED IDENTIFIER OFF i skripten.
-N tar nu ett strängvärde som kan vara ett av true, falseeller disable för att ange krypteringsvalet. (default är detsamma som att utelämna parametern)
Om -N och -C inte tillhandahålls förhandlar sqlcmd autentisering med servern utan att verifiera servercertifikatet.
Om -N tillhandahålls men -C inte är det kräver sqlcmd validering av servercertifikatet. Ett false värde för kryptering kan fortfarande leda till kryptering av inloggningspaketet.
Om både -N och -C tillhandahålls använder sqlcmd sina värden för krypteringsförhandling.
Mer information om förhandlingar om klient-/serverkryptering finns i MS-TDS PRELOGIN-.
-u Den genererade Unicode-utdatafilen har UTF-16-Little-Endian byteordningsmärke (BOM) skrivet till den.
Vissa beteenden som bevarades för att upprätthålla kompatibilitet med OSQL kan ändras, till exempel justering av kolumnrubriker för vissa datatyper.
Alla kommandon måste få plats på en rad, även EXIT. Interaktivt läge söker inte efter öppna parenteser eller citattecken för kommandon och frågar inte efter efterföljande rader. Det här beteendet skiljer sig från ODBC-versionen, vilket gör att frågan som körs av EXIT(query) kan sträcka sig över flera rader.
Anslutningar från verktyget sqlcmd (Go) är begränsade till TCP-anslutningar. Just nu stöds inte namngivna rör i drivrutinen go-mssqldb.
Förbättringar
:Connect har nu en valfri -G-parameter för att välja någon av autentiseringsmetoderna för Azure SQL Database – SqlAuthentication, ActiveDirectoryDefault, ActiveDirectoryIntegrated, ActiveDirectoryServicePrincipal, ActiveDirectoryManagedIdentity, ActiveDirectoryPassword. Mer information finns i Microsoft Entra-autentisering. Om -G inte tillhandahålls används integrerad säkerhet eller SQL Server-autentisering, beroende på förekomsten av en -U användarnamnsparameter.
Med den nya kommandoradsparametern --driver-logging-level kan du se spårningar från go-mssqldb drivrutinen. Använd 64 för att se alla spårningar.
sqlcmd kan nu skriva ut resultat med ett lodrätt format. Använd den nya kommandoradsväxeln -F vertical för att ange den. Skriptvariabeln SQLCMDFORMAT styr den också.
För närvarande kräver sqlcmd inte något utrymme mellan kommandoradsalternativet och värdet. Men i en framtida version kan ett utrymme krävas mellan kommandoradsalternativet och värdet.
Kommandoradsalternativ
Inloggningsrelaterade alternativ
-A
Loggar in på SQL Server med en dedikerad administratörsanslutning (DAC). Den här typen av anslutning används för att felsöka en server. Den här anslutningen fungerar endast med serverdatorer som stöder DAC. Om DAC inte är tillgängligt genererar sqlcmd ett felmeddelande och avslutar sedan. Mer information om DAC finns i Diagnostikanslutning för databasadministratörer. Alternativet -A stöds inte med alternativet -G. När du ansluter till Azure SQL Database med hjälp av -Amåste du vara administratör på den logiska SQL-servern. DAC är inte tillgängligt för en Microsoft Entra-administratör.
-C
Det här alternativet används av klienten för att konfigurera det så att det implicit litar på servercertifikatet utan validering. Det här alternativet motsvarar alternativet ADO.NET TRUSTSERVERCERTIFICATE = true.
För verktyget sqlcmd (Go) gäller även följande villkor:
Om -N och -C inte tillhandahålls förhandlar sqlcmd autentisering med servern utan att verifiera servercertifikatet.
Om -N tillhandahålls men -C inte är det kräver sqlcmd validering av servercertifikatet. Ett false värde för kryptering kan fortfarande leda till kryptering av inloggningspaketet.
Om både -N och -C tillhandahålls använder sqlcmd sina värden för krypteringsförhandling.
-d db_name
Utfärdar en USE <db_name>-instruktion när du startar sqlcmd. Det här alternativet anger sqlcmd skriptvariabel SQLCMDDBNAME. Den här parametern anger den första databasen. Standardvärdet är inloggningens standarddatabasegenskap. Om databasen inte finns genereras ett felmeddelande och sqlcmd avslutas.
-D
Tolkar servernamnet som anges för -S som ett DSN i stället för ett värdnamn. Mer information finns i DSN-stöd i sqlcmd och bcp i Ansluta med sqlcmd.
Anteckning
Alternativet -D är endast tillgängligt på Linux- och macOS-klienter. På Windows-klienter hänvisade det tidigare till ett nu föråldrat alternativ som har tagits bort och ignoreras.
-l login_timeout
Anger antalet sekunder innan en sqlcmd-inloggning till ODBC-drivrutinen tidsgränsen går ut när du försöker ansluta till en server. Det här alternativet anger sqlcmd skriptvariabel SQLCMDLOGINTIMEOUT. Standardtidsgränsen för inloggning till sqlcmd är 8 sekunder. När du använder alternativet -G för att ansluta till Azure SQL Database eller Azure Synapse Analytics och autentisera med Microsoft Entra-ID rekommenderas ett timeout-värde på minst 30 sekunder. Tidsgränsen för inloggning måste vara ett tal mellan 0 och 65534. Om det angivna värdet inte är numeriskt eller inte tillhör det intervallet genererar sqlcmd ett felmeddelande. Värdet 0 anger att tidsgränsen ska vara oändlig.
-E
Använder en betrodd anslutning i stället för att använda ett användarnamn och lösenord för att logga in på SQL Server. Som standard använder -E det betrodda anslutningsalternativet utan att anges.
Alternativet -E ignorerar möjliga inställningar för användarnamn och lösenordsmiljövariabler, till exempel SQLCMDPASSWORD. Om alternativet -E används tillsammans med alternativet -U eller alternativet -P genereras ett felmeddelande.
-g
Anger inställningen Kolumnkryptering till Enabled. Mer information finns i Always Encrypted. Endast huvudnycklar som lagras i Windows Certificate Store stöds. Alternativet -g kräver minst sqlcmd version 13.1. För att fastställa din version kör du sqlcmd -?.
-G
Det här alternativet används av klienten när du ansluter till Azure SQL Database eller Azure Synapse Analytics för att ange att användaren ska autentiseras med Hjälp av Microsoft Entra-autentisering. Det här alternativet anger sqlcmd skriptvariabel SQLCMDUSEAAD = true. Alternativet -G kräver minst sqlcmd version 13.1. För att fastställa din version kör du sqlcmd -?. Mer information finns i Ansluta till SQL Database eller Azure Synapse Analytics med hjälp av Microsoft Entra-autentisering. Alternativet -A stöds inte med alternativet -G.
Alternativet -G gäller endast för Azure SQL Database och Azure Synapse Analytics.
Ett arbetsstationsnamn. Det här alternativet anger sqlcmd skriptvariabel SQLCMDWORKSTATION. Namnet på arbetsstationen visas i kolumnen hostname i sys.sysprocesses katalogvyn och kan returneras med hjälp av den lagrade proceduren sp_who. Om det här alternativet inte anges är standardvärdet det aktuella datornamnet. Det här namnet kan användas för att identifiera olika sqlcmd- sessioner.
-j
Skriver ut råa felmeddelanden på skärmen.
-K ansökningsavsikt
Deklarerar programarbetsbelastningstypen när du ansluter till en server. Det enda värde som stöds för närvarande är ReadOnly. Om -K inte anges stöder sqlcmd inte anslutning till en sekundär replik i en tillgänglighetsgrupp. Mer information finns i Aktiva sekundärfiler: Läsbar sekundär replik (AlwaysOn-tillgänglighetsgrupper).
Det här alternativet används av klienten för att begära en krypterad anslutning.
För verktyget sqlcmd (Go) tar -N nu ett strängvärde som kan vara ett av true, falseeller disable för att ange krypteringsalternativet. (default är detsamma som att utelämna parametern):
Om -N och -C inte tillhandahålls förhandlar sqlcmd autentisering med servern utan att verifiera servercertifikatet.
Om -N tillhandahålls men -C inte är det kräver sqlcmd validering av servercertifikatet. Ett false värde för kryptering kan fortfarande leda till kryptering av inloggningspaketet.
Om både -N och -C tillhandahålls använder sqlcmd sina värden för krypteringsförhandling.
-P lösenord
Ett användarangivet lösenord. Lösenord är skiftlägeskänsliga. Om alternativet -U används och alternativet -P inte används och SQLCMDPASSWORD miljövariabeln inte har angetts sqlcmd uppmanar användaren att ange ett lösenord. Vi rekommenderar inte att du använder ett null-lösenord (tomt) men du kan ange null-lösenordet med hjälp av ett par sammanhängande dubbla citattecken för parametervärdet ("").
Viktigt
Användning av -P bör betraktas som osäkert. Undvik att ange lösenordet på kommandoraden. Du kan också använda miljövariabeln SQLCMDPASSWORD eller interaktivt ange lösenordet genom att utelämna alternativet -P.
Lösenordsprompten visas genom att skriva ut lösenordsprompten till konsolen på följande sätt: Password:
Användarindata är dolda. Det innebär att ingenting visas och markören förblir på plats.
Med miljövariabeln SQLCMDPASSWORD kan du ange ett standardlösenord för den aktuella sessionen. Därför behöver lösenord inte hårdkodas i batchfiler. I följande exempel anges först variabeln SQLCMDPASSWORD i kommandotolken och kommer sedan åt verktyget sqlcmd.
Skriv följande i kommandotolken. Ersätt <password> med ett giltigt lösenord.
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
Om kombinationen av användarnamn och lösenord är felaktig genereras ett felmeddelande.
Anteckning
Miljövariabeln OSQLPASSWORD har sparats för bakåtkompatibilitet. Miljövariabeln SQLCMDPASSWORD har företräde framför OSQLPASSWORD miljövariabeln. Det innebär att sqlcmd och osql kan användas bredvid varandra utan interferens. Gamla skript fortsätter att fungera.
Om alternativet -P används med alternativet -E genereras ett felmeddelande.
Om alternativet -P följs av fler än ett argument genereras ett felmeddelande och programmet avslutas.
Ett lösenord som innehåller specialtecken kan generera ett felmeddelande. Du bör undvika specialtecken när du använder -Peller använda miljövariabeln SQLCMDPASSWORD i stället.
-S [protokoll:]server[\instans_namn][,port]
Anger den instans av SQL Server som du vill ansluta till. Den anger sqlcmd skriptvariabel SQLCMDSERVER.
Ange server_name för att ansluta till standardinstansen av SQL Server på serverdatorn. Ange server_name[\instance_name] för att ansluta till en namngiven instans av SQL Server på den serverdatorn. Om ingen serverdator har angetts ansluter sqlcmd till standardinstansen av SQL Server på den lokala datorn. Det här alternativet krävs när du kör sqlcmd från en fjärrdator i nätverket.
protokoll kan vara tcp (TCP/IP), lpc (delat minne) eller np (namngivna pipes).
Om du inte anger en server_name[\instance_name] när du startar sqlcmdsöker SQL Server efter och använder miljövariabeln SQLCMDSERVER.
Anteckning
Miljövariabeln OSQLSERVER har sparats för bakåtkompatibilitet. Miljövariabeln SQLCMDSERVER har företräde framför OSQLSERVER miljövariabeln. Det innebär att sqlcmd och osql kan användas bredvid varandra utan interferens. Gamla skript fortsätter att fungera.
-U login_id
Inloggningsnamnet eller det inneslutna databasanvändarnamnet. För användare av enskilda databaser måste du ange databasnamnalternativet (-d).
Anteckning
Miljövariabeln OSQLUSER har sparats för bakåtkompatibilitet. Miljövariabeln SQLCMDUSER har företräde framför OSQLUSER miljövariabeln. Det innebär att sqlcmd och osql kan användas bredvid varandra utan interferens. Gamla skript fortsätter att fungera.
Om du inte anger antingen alternativet -U eller alternativet -P försöker sqlcmd ansluta med Windows-autentiseringsläge. Autentiseringen baseras på Windows-kontot för användaren som kör sqlcmd.
Om alternativet -U används med alternativet -E (beskrivs senare i den här artikeln) genereras ett felmeddelande. Om alternativet -U följs av fler än ett argument genereras ett felmeddelande och programmet avslutas.
-z nytt_lösenord
Ändra lösenordet. Ersätt <oldpassword> med det gamla lösenordet och <newpassword> med det nya lösenordet.
Anger in- och utdatakodsidorna. Kodsidans nummer är ett numeriskt värde som anger en installerad Windows-kodsida.
Kodsideskonverteringsregler:
Om inga kodsidor anges använder sqlcmd den aktuella kodsidan för både indata- och utdatafiler, såvida inte indatafilen är en Unicode-fil, i vilket fall ingen konvertering krävs.
sqlcmd identifierar automatiskt både big-endian och little-endian Unicode-indatafiler. Om alternativet -u har angetts är utdata alltid i little-endian Unicode.
Om ingen utdatafil har angetts är utdatakodsidan konsolens kodsida. Med den här metoden kan utdata visas korrekt i konsolen.
Flera indatafiler antas ha samma kodsida. Unicode- och icke-Unicode-indatafiler kan blandas.
Ange chcp i kommandotolken för att verifiera kodsidan för cmd.exe.
-i input_file[,input_file2...]
Identifierar filen som innehåller en batch med Transact-SQL-instruktioner eller lagrade procedurer. Flera filer kan anges som läs- och bearbetas i ordning. Använd inga blanksteg mellan filnamn.
sqlcmd kontrollerar först om alla angivna filer finns. Om en eller flera filer inte finns sqlcmd avslutas. Alternativen -i och -Q/-q är ömsesidigt uteslutande.
Anteckning
Om du använder alternativet -i följt av en eller flera ytterligare parametrar måste du använda ett blanksteg mellan parametern och värdet. Det här är ett känt problem i sqlcmd (Go).
Filsökvägar som innehåller blanksteg måste omges av citattecken.
Det här alternativet kan användas mer än en gång:
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
-o utdatafil
Identifierar filen som tar emot utdata från sqlcmd.
Om -u anges lagras output_file i Unicode-format. Om filnamnet inte är giltigt genereras ett felmeddelande och sqlcmd avslutas.
sqlcmd stöder inte samtidig skrivning av flera sqlcmd- processer till samma fil. Filutdata är skadade eller felaktiga. Alternativet -f är också relevant för filformat. Den här filen skapas om den inte finns. En fil med samma namn från en tidigare sqlcmd session skrivs över. Filen som anges här är inte den stdout filen. Om en stdout fil anges används inte den här filen.
Filsökvägar som innehåller blanksteg måste omges av citattecken.
-r[0 | 1]
Omdirigerar felmeddelanden till skärmen (stderr). Om du inte anger en parameter eller om du anger 0omdirigeras endast felmeddelanden som har en allvarlighetsgrad på 11 eller högre. Om du anger 1omdirigeras alla felmeddelandeutdata, inklusive PRINT. Det här alternativet har ingen effekt om du använder -o. Som standard skickas meddelanden till stdout.
Anteckning
För verktyget sqlcmd (Go) kräver -r ett argument för 0 eller 1.
-R
gäller endast för: ODBC sqlcmd.
Gör att sqlcmd anpassar numeriska kolumner, valuta, datum och tidskolumner som hämtats från SQL Server efter klientens nationella inställningar. Som standard visas dessa kolumner med hjälp av serverns regionala inställningar.
-u
Anger att output_file lagras i Unicode-format, oavsett formatet för input_file.
Anteckning
För verktyget sqlcmd (Go) har den genererade Unicode-utdatafilen fått Byte-order mark (BOM) för UTF-16 Little-Endian skriven till sig.
Frågekörningsalternativ
-e
Skriver indataskript till standardutdataenheten (stdout).
-Jag
gäller endast för: ODBC sqlcmd.
Anger anslutningsalternativet SET QUOTED_IDENTIFIER till ON. Som standard är den inställd på OFF. Mer information finns i SET QUOTED_IDENTIFIER (Transact-SQL).
Anteckning
Om du vill inaktivera beteendet för citerade identifierare i verktyget sqlcmd (Go) lägger du till SET QUOTED IDENTIFIER OFF i skripten.
-q "kommandoradsförfrågan"
Kör en fråga när sqlcmd startar, men avslutar inte sqlcmd- när frågan har körts. Flera semikolonavgränsade fråge kan köras. Använd citattecken runt frågan, som du ser i följande exempel.
I kommandotolken skriver du:
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Viktigt
Använd inte GO terminatorn i sökfrågan.
Om -b anges tillsammans med det här alternativet avslutas sqlcmd- vid fel.
-b beskrivs någon annanstans i den här artikeln.
-Q "kommandoradsfråga"
Kör en fråga när sqlcmd startar och sedan omedelbart avslutar sqlcmd. Flera semikolonavgränsade fråge kan köras.
Använd citattecken runt frågan, som du ser i följande exempel.
I kommandotolken skriver du:
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Viktigt
Använd inte GO avslutare i sökfrågan.
Om -b anges tillsammans med det här alternativet avslutas sqlcmd- vid fel.
-b beskrivs någon annanstans i den här artikeln.
-t fråge_timeout
Anger antalet sekunder innan ett kommando (eller Transact-SQL-instruktion) överskrider tidsgränsen. Det här alternativet anger sqlcmd skriptvariabel SQLCMDSTATTIMEOUT. Om ett query_timeout värde inte har angetts löper kommandot inte ut. query_timeout måste vara ett tal mellan 1 och 65534. Om det angivna värdet inte är numeriskt eller inte tillhör det intervallet genererar sqlcmd ett felmeddelande.
Anteckning
Det faktiska tidsgränsvärdet kan variera från det angivna query_timeout värdet med flera sekunder.
-v var = värde [ var = värde... ]
Skapar en sqlcmd skriptvariabel som kan användas i ett sqlcmd- skript. Omge värdet med citattecken om värdet innehåller blanksteg. Du kan ange flera <var>="<value>" värden. Om det finns fel i något av de angivna värdena genererar sqlcmd ett felmeddelande och avslutas.
Orsakar sqlcmd- att ignorera skriptvariabler. Den här parametern är användbar när ett skript innehåller många INSERT-instruktioner som kan innehålla strängar som har samma format som vanliga variabler, till exempel $(<variable_name>).
Formatalternativ
-h rubriker
Anger antalet rader som ska skrivas ut mellan kolumnrubrikerna. Standardvärdet är att skriva ut rubriker en gång för varje uppsättning frågeresultat. Det här alternativet anger sqlcmd skriptvariabel SQLCMDHEADERS. Använd -1 för att ange att rubriker inte ska skrivas ut. Alla värden som inte är giltiga gör att sqlcmd generera ett felmeddelande och sedan avsluta.
-k [1 | 2]
Tar bort alla kontrolltecken, till exempel flikar och nya radtecken från utdata. Den här parametern bevarar kolumnformatering när data returneras.
-k tar bort kontrolltecken.
-k1 ersätter varje kontrolltecken med ett mellanslag.
-k2 ersätter på varandra följande kontrolltecken med ett enda blanksteg.
-s kol_separator
Anger kolumnavgränsarens tecken. Standardvärdet är ett tomt utrymme. Det här alternativet anger sqlcmd skriptvariabel SQLCMDCOLSEP. Om du vill använda tecken som har särskild betydelse för operativsystemet, till exempel et-et (&) eller semikolon (;), omger du tecknet inom citattecken ("). Kolumnavgränsaren kan vara valfritt 8-bitarstecken.
-w skärmbredd
Anger skärmbredden för utdata. Det här alternativet anger sqlcmd skriptvariabel SQLCMDCOLWIDTH. Kolumnbredden måste vara ett tal som är större än 8 och mindre än 65536. Om den angivna kolumnbredden inte hamnar i det intervallet genererar sqlcmd ett felmeddelande. Standardbredden är 80 tecken. När en utdatarad överskrider den angivna kolumnbredden omsluts den till nästa rad.
-W
Det här alternativet tar bort avslutande blanksteg från en kolumn. Använd det här alternativet tillsammans med alternativet -s när du förbereder data som ska exporteras till ett annat program. Det går inte att använda med alternativen -y eller -Y.
-y variable_length_type_display_width
Anger sqlcmd-skriptvariabeln SQLCMDMAXVARTYPEWIDTH. Standardvärdet är 256. Det begränsar antalet tecken som returneras för datatyperna med stor variabel längd:
varchar(max)
nvarchar(max)
varbinary(max)
XML
användardefinierade datatyper (UDT)
text
ntext
bild
UDT kan vara av fast längd beroende på implementeringen. Om längden på en UDT med fast längd är kortare än display_widthpåverkas inte värdet på den returnerade UDT:n. Om längden överstiger display_width, förkortas utdata.
Varning
Använd alternativet -y 0 med extrem försiktighet eftersom det kan orsaka betydande prestandaproblem på både servern och nätverket, beroende på storleken på de data som returneras.
-Y fixed_length_type_display_width
Ange skriptvariabeln sqlcmdSQLCMDMAXFIXEDTYPEWIDTH. Standardvärdet är 0 (obegränsat). Begränsar antalet tecken som returneras för följande datatyper:
char(n), där 1 <= n<= 8000
nchar(n), där 1 <= n<= 4000
varchar(n), där 1 <= n<= 8000
nvarchar(n), där 1 <= n<= 4000
varbinary(n), där 1 <= n<= 4000
sql_variant
Alternativ för felrapportering
-b
Anger att sqlcmd avslutar och returnerar ett DOS ERRORLEVEL värde när ett fel inträffar. Värdet som returneras till variabeln ERRORLEVEL är 1 när SQL Server-felmeddelandet har en allvarlighetsgrad som är större än 10. annars returneras värdet 0. Om alternativet -V har angetts utöver -brapporterar sqlcmd inget fel om allvarlighetsgraden är lägre än de värden som anges med hjälp av -V. Batchfiler för kommandotolken kan testa värdet för ERRORLEVEL och hantera felet på rätt sätt.
sqlcmd rapporterar inte fel för allvarlighetsgrad 10 (informationsmeddelanden).
Om skriptet sqlcmd innehåller en felaktig kommentar, syntaxfel eller saknar en skriptvariabel ERRORLEVEL returneras 1.
-m error_level
Styr vilka felmeddelanden som skickas till stdout. Meddelanden som har en allvarlighetsgrad som är större än eller lika med den här nivån skickas. När det här värdet är inställt på -1skickas alla meddelanden, inklusive informationsmeddelanden. Mellanslag är inte tillåtna mellan -m och -1. Till exempel är -m-1 giltigt och -m -1 inte är det.
Det här alternativet anger även sqlcmd skriptvariabel SQLCMDERRORLEVEL. Den här variabeln har standardvärdet 0.
-V felnivåallvarlighet
Styr allvarlighetsgraden som används för att ange variabeln ERRORLEVEL. Felmeddelanden som har allvarlighetsnivåer som är större än eller lika med den här värdeuppsättningen ERRORLEVEL. Värden som är mindre än 0 rapporteras som 0. Batch- och CMD-filer kan användas för att testa värdet för variabeln ERRORLEVEL.
Diverse alternativ
-paketstorlek
Begär ett paket med en annan storlek. Det här alternativet anger sqlcmd skriptvariabel SQLCMDPACKETSIZE.
packet_size måste vara ett värde mellan 512 och 32767. Standardvärdet är 4096. En större paketstorlek kan förbättra prestanda för körning av skript som har många Transact-SQL-instruktioner mellan GO kommandon. Du kan begära en större paketstorlek. Men om begäran nekas använder sqlcmd serverns standardvärde för paketstorlek.
-c batch_terminator
Anger tecknet för batch-slut. Som standard avslutas kommandon och skickas till SQL Server genom att skriva ordet GO på en rad på egen hand. När du återställer batchavslutaren ska du inte använda Transact-SQL reserverade nyckelord eller tecken som har särskild betydelse för operativsystemet, även om de föregås av ett omvänt snedstreck.
-L[c]
Visar en lista över lokalt konfigurerade serverdatorer och namnen på de serverdatorer som sänder i nätverket. Den här parametern kan inte användas i kombination med andra parametrar. Det maximala antalet serverdatorer som kan visas är 3 000. Om serverlistan förkortas på grund av buffertens storlek visas ett varningsmeddelande.
Anteckning
På grund av typen av sändning i nätverk kanske sqlcmd inte får ett snabbt svar från alla servrar. Listan över servrar som returneras kan därför variera för varje anrop av det här alternativet.
Om den valfria parametern c anges visas utdata utan Servers: rubrikrad och varje serverrad visas utan inledande blanksteg. Den här presentationen kallas för rent resultat. Rensa utdata förbättrar bearbetningsprestandan för skriptspråk.
-p[1]
Skriver ut prestandastatistik för varje resultatuppsättning. Följande visning är ett exempel på formatet för prestandastatistik:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)
Var:
x = Antal transaktioner som bearbetas av SQL Server.
t1 = Total tid för alla transaktioner.
t2 = Genomsnittlig tid för en enskild transaktion.
t3 = Genomsnittligt antal transaktioner per sekund.
Alla tider är i millisekunder.
Om den valfria parametern 1 anges är utdataformatet för statistiken i kolonavgränsat format som enkelt kan importeras till ett kalkylblad eller bearbetas av ett skript.
Om den valfria parametern är något annat värde än 1genereras ett fel och sqlcmd avslutas.
-X[1]
Inaktiverar kommandon som kan äventyra systemsäkerheten när sqlcmd körs från en batchfil. De inaktiverade kommandona känns fortfarande igen. sqlcmd utfärdar ett varningsmeddelande och fortsätter. Om den valfria parametern 1 anges genererar sqlcmd ett felmeddelande och avslutas. Följande kommandon inaktiveras när alternativet -X används:
ED
!!kommando
Om alternativet -X anges förhindrar det att miljövariabler skickas vidare till sqlcmd-. Det förhindrar också att startskriptet som anges med hjälp av SQLCMDINI skriptvariabeln körs. Mer information om sqlcmd skriptvariabler finns i sqlcmd – Använd med skriptvariabler.
-?
Visar versionen av sqlcmd och en syntaxsammanfattning av sqlcmd- alternativ.
Anteckning
På macOS kör du sqlcmd '-?' (med citattecken) i stället.
Anmärkningar
Alternativ behöver inte användas i den ordning som visas i syntaxavsnittet.
Anteckning
Om du använder alternativet -i följt av en eller flera ytterligare parametrar måste du använda ett blanksteg mellan parametern och värdet. Det här är ett känt problem i sqlcmd (Go).
När flera resultat returneras skriver sqlcmd ut en tom rad mellan varje resultatuppsättning i en batch. Dessutom visas inte <x> rows affected-meddelandet när det inte gäller det uttryck som exekveras.
Om du vill använda sqlcmd interaktivt skriver du sqlcmd i kommandotolken med något eller flera av de alternativ som beskrivs tidigare i den här artikeln. Mer information finns i Använda sqlcmd-verktyget
Anteckning
Alternativen -l, -Q, -Z eller -i gör att sqlcmd avslutas efter att ha körts.
Den totala längden på sqlcmd kommandoraden i kommandomiljön (till exempel cmd.exe eller bash), inklusive alla argument och expanderade variabler, bestäms av det underliggande operativsystemet.
Variabelordning (från låg till hög)
Miljövariabler på systemnivå
Miljövariabler på användarnivå
Kommandoskal (SET X=Y) ställs in vid kommandoprompten innan sqlcmd
sqlcmd -v X=Y
:Setvar X Y
Anteckning
Om du vill visa miljövariablerna öppnar du Systemi Kontrollpanelenoch väljer sedan fliken Avancerat.
sqlcmd-skriptvariabler
Variabel
Relaterat alternativ
R/W
Standard
SQLCMDUSER
-U
R
""
SQLCMDPASSWORD
-P
--
""
SQLCMDSERVER
-S
R
StandardLokalInstans
SQLCMDWORKSTATION
-H
R
Datornamn
SQLCMDDBNAME
-d
R
""
SQLCMDLOGINTIMEOUT
-l
R/W
"8" (sekunder)
SQLCMDSTATTIMEOUT
-t
R/W
"0" = vänta på obestämd tid
SQLCMDHEADERS
-h
R/W
0
SQLCMDCOLSEP
-s
R/W
" "
SQLCMDCOLWIDTH
-w
R/W
0
SQLCMDPACKETSIZE
-a
R
"4096"
SQLCMDERRORLEVEL
-m
R/W
0
SQLCMDMAXVARTYPEWIDTH
-y
R/W
"256"
SQLCMDMAXFIXEDTYPEWIDTH
-Y
R/W
"0" = obegränsat
SQLCMDEDITOR
R/W
edit.com
SQLCMDINI
R
""
SQLCMDUSEAAD
-G
R/W
""
SQLCMDUSER, SQLCMDPASSWORDoch SQLCMDSERVER anges när :Connect används.
R anger att värdet bara kan anges en gång under programinitieringen.
R/W anger att värdet kan ändras med hjälp av kommandot :setvar och efterföljande kommandon påverkas av det nya värdet.
sqlcmd-kommandon
Förutom Transact-SQL-instruktioner i sqlcmdär följande kommandon också tillgängliga:
GO [ antal ]
:List
[:]RESET
:Error
[:]ED
:Out
[:]!!
:Perftrace
[:]QUIT
:Connect
[:]EXIT
:On Error
:r
:Help
:ServerList
:XML [ ON | OFF ]
:Setvar
:Listvar
Tänk på följande när du använder sqlcmd kommandon:
Alla sqlcmd-kommandon, förutom GO, måste föregås av ett kolon (:).
Viktigt
För att upprätthålla bakåtkompatibilitet med befintliga osql- skript identifieras vissa av kommandona utan kolonet, vilket anges av :.
sqlcmd kommandon identifieras endast om de förekommer i början av en rad.
Alla sqlcmd- kommandon är skiftlägesokänsliga.
Varje kommando måste finnas på en separat rad. Ett kommando kan inte följas av en Transact-SQL-instruktion eller ett annat kommando.
Kommandon körs omedelbart. De placeras inte i exekveringsbufferten som Transact-SQL-satser gör.
Redigera kommandon
[:]ED
Startar textredigeraren. Den här redigeraren kan användas för att redigera den aktuella Transact-SQL batchen eller den senast utförda batchen. Om du vill redigera den senast utförda batchen måste kommandot ED skrivas direkt efter att den senaste batchen har slutfört körningen.
Textredigeraren definieras av miljövariabeln SQLCMDEDITOR. Standardredigeraren är Edit. Om du vill ändra redigeraren anger du miljövariabeln SQLCMDEDITOR. Om du till exempel vill ställa in redigeraren på Microsoft Notepad skriver du i kommandotolken:
SET SQLCMDEDITOR=notepad
[:]NOLLSTÄLLA
Rensar uttalscacheminnet.
:Lista
Skriver ut innehållet i cacheminnet.
Variabler
:Setvar <var> [ "värde" ]
Definierar sqlcmd skriptvariabler. Skriptvariabler har följande format: $(VARNAME).
Variabelnamn är skiftlägesokänsliga.
Skriptvariabler kan anges på följande sätt:
Implicit användning av ett kommandoradsalternativ. Alternativet -l anger till exempel variabeln SQLCMDLOGINTIMEOUTsqlcmd.
Uttryckligen med hjälp av kommandot :Setvar.
Genom att definiera en miljövariabel innan du kör sqlcmd.
Anteckning
Alternativet -X förhindrar att miljövariabler skickas vidare till sqlcmd-.
Om en variabel som definieras med hjälp av :Setvar och en miljövariabel har samma namn har variabeln som definieras med hjälp av :Setvar företräde.
Variabelnamn får inte innehålla tomma blankstegstecken.
Variabelnamn kan inte ha samma formulär som ett variabeluttryck, till exempel $(var).
Om strängvärdet för skriptvariabeln innehåller blanksteg, omge värdet med citattecken. Om ett värde för en skriptvariabel inte anges tas skriptvariabeln bort.
:Listvar
Visar en lista över de skriptvariabler som för närvarande har angetts.
Anteckning
Endast skriptvariabler som anges av sqlcmdoch de som anges med kommandot :Setvar visas.
Utförandekommandon
:Fel <filnamn> | STDERR | STDOUT
Omdirigera alla felutdata till filen som anges av filnamn, till stderr eller till stdout. Kommandot :Error kan visas flera gånger i ett skript. Som standard skickas felutdata till stderr.
filnamn
Skapar och öppnar en fil som tar emot utdata. Om filen redan finns trunkeras den till noll byte. Om filen inte är tillgänglig på grund av behörigheter eller andra orsaker växlas inte utdata om, vilket innebär att det skickas till det senast angivna målet eller standardmålet.
STDERR
Växlar felutdata till stderr-strömmen. Om detta har blivit omdirigerat, tar det mål som strömmen har blivit omdirigerad till emot felutdata.
STDOUT
Växlar felutdata till stdout-strömmen. Om detta har blivit omdirigerat, tar det mål som strömmen har blivit omdirigerad till emot felutdata.
:Ut <filnamn> | STDERR | STDOUT
Skapar och omdirigerar alla frågeresultat till filen som anges av filnamn, till stderr eller till stdout. Som standard skickas utdata till stdout. Om filen redan finns trunkeras den till noll byte. Kommandot :Out kan visas flera gånger i ett skript.
:Perftrace <filnamn> | STDERR | STDOUT
Skapar och omdirigerar all prestandaspårningsinformation till filen som anges av filnamn, till stderr eller till stdout. Som standard skickas prestandaspårningsutdata till stdout. Om filen redan finns trunkeras den till noll byte. Kommandot :Perftrace kan visas flera gånger i ett skript.
Exekveringskontrollkommandon
Om fel [ avsluta | ignorera ]
Anger vilken åtgärd som ska utföras när ett fel inträffar under skript- eller batchkörningen.
När alternativet exit används avslutas sqlcmd med lämpligt felvärde.
När alternativet ignore används ignorerar sqlcmd felet och fortsätter att köra batchen eller skriptet. Som standard skrivs ett felmeddelande ut.
[:]AVSLUTA
Orsakar att sqlcmd avslutas.
[:]EXIT [ ( uttalande ) ]
Låter dig använda resultatet av en SELECT-instruktion som returvärde i sqlcmd. Om det är numeriskt konverteras den första kolumnen i den sista resultatraden till ett heltal på 4 byte (lång). MS-DOS, Linux och macOS skickar den låga byte till den överordnade processen eller operativsystemfelnivån. Windows 2000 och senare versioner skickar heltalet på 4 byte i sin helhet. Syntaxen är :EXIT(query).
Till exempel:
:EXIT(SELECT @@ROWCOUNT)
Du kan också ta med parametern :EXIT som en del av en batchfil. I kommandotolken skriver du till exempel:
sqlcmd -Q ":EXIT(SELECT COUNT(*) FROM '%1')"
Verktyget sqlcmd skickar allt mellan parenteserna (()) till servern. Om en systemlagrad procedur väljer en uppsättning och returnerar ett värde, returneras bara valet. Instruktionen :EXIT() utan något mellan parenteserna kör allt före den i batchen och avslutas sedan utan ett returvärde.
När en felaktig fråga har angetts avslutas sqlcmd utan ett returvärde.
Här är en lista över EXIT format:
:EXIT
Kör inte batchen och avslutas sedan omedelbart och returnerar inget värde.
:EXIT( )
Kör batchen och avslutar och returnerar inget värde.
:EXIT(query)
Kör batchen som innehåller frågan och avslutas sedan när den returnerar resultatet av frågan.
Om RAISERROR används i ett sqlcmd--skript och tillståndet 127 har genererats, avslutas sqlcmd och meddelande-ID:t returneras till klienten. Till exempel:
RAISERROR(50001, 10, 127)
Det här felet gör att skriptet sqlcmd slutar och returnerar meddelande-ID 50001 till klienten.
Returvärdena -1 till -99 reserveras av SQL Server och sqlcmd definierar följande ytterligare returvärden:
Returvärde
Beskrivning
-100
Ett fel uppstod innan returvärdet skulle väljas.
-101
Inga rader hittades när returvärdet skulle väljas.
-102
Konverteringsfel uppstod när returvärdet skulle väljas.
GÅ [antal]
GO signalerar både slutet av en batch och körningen av cachelagrade Transact-SQL-instruktioner. Batchen körs flera gånger som separata batchar. Du kan inte deklarera en variabel mer än en gång i en enda batch.
Diverse kommandon
:r <filnamn>
Parsar ytterligare Transact-SQL-instruktioner och sqlcmd kommandon från filen som anges av filnamn i instruktionscacheminnet.
filnamn läses relativt till startkatalogen där sqlcmd kördes.
Om filen innehåller Transact-SQL-instruktioner som inte följs av GOmåste du ange GO på raden som följer :r.
Filen kommer att läsas och köras efter att en batchterminator har påträffats. Du kan utfärda flera :r kommandon. Filen kan innehålla valfritt sqlcmd--kommando, inklusive batchavslutaren GO.
Anteckning
Antalet rader som visas i interaktivt läge ökas med en för varje :r kommando som påträffas. Kommandot :r visas i utdata från listkommandot.
:Serverlista
Visar en lista över lokalt konfigurerade servrar och namnen på servrarna som sänder i nätverket.
Ansluter till en instans av SQL Server. Stänger även den aktuella anslutningen.
Alternativ för timeout
Värde
Uppförande
0
Vänta för evigt
n>0
Vänta i n sekunder
Den SQLCMDSERVER skriptvariabeln återspeglar den aktuella aktiva anslutningen.
Om timeout inte anges är värdet för variabeln SQLCMDLOGINTIMEOUT standard.
Om endast user_name anges (antingen som ett alternativ eller som en miljövariabel) uppmanas användaren att ange ett lösenord. Användarna tillfrågas inte om SQLCMDUSER eller SQLCMDPASSWORD miljövariabler har angetts. Om du inte anger alternativ eller miljövariabler används Windows-autentiseringsläget för att logga in. Om du till exempel vill ansluta till en instans instance1, för SQL Server, myserver, med hjälp av integrerad säkerhet använder du följande kommando:
:connect myserver\instance1
Om du vill ansluta till standardinstansen av myserver med hjälp av skriptvariabler använder du följande inställningar:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
[:]!!
kommando
Kör operativsystemkommandon. Om du vill köra ett operativsystemkommando startar du en rad med två utropstecken (!!) följt av kommandot operativsystem. Till exempel:
Visar sqlcmd-kommandon tillsammans med en kort beskrivning av varje kommando.
sqlcmd-filnamn
sqlcmd indatafiler kan anges med alternativet -i eller kommandot :r. Utdatafiler kan anges med alternativet -o eller kommandona :Error, :Out och :Perftrace. Följande är några riktlinjer för att arbeta med dessa filer:
:Error, :Out och :Perftrace ska använda separata filnamn värde. Om samma filnamn används kan indata från kommandona blandas.
Om en indatafil som finns på en fjärrserver anropas från sqlcmd på en lokal dator, och filen innehåller en sökväg för enhetsfilen, till exempel :Out c:\OutputFile.txt, skapas utdatafilen på den lokala datorn och inte på fjärrservern.
Giltiga filsökvägar är: C:\<filename>, \\<Server>\<Share$>\<filename>och "C:\Some Folder\<file name>". Om det finns ett blanksteg i sökvägen, använd citattecken.
Varje ny sqlcmd session skriver över befintliga filer som har samma namn.
Informationsmeddelanden
sqlcmd skriver ut alla informationsmeddelanden som skickas av servern. I följande exempel skrivs ett informationsmeddelande ut när Transact-SQL-instruktionerna har körts.
Starta sqlcmd. I kommandotolken sqlcmd skriver du frågan:
USE AdventureWorks2022;
GO
När du trycker på RETURskrivs följande informationsmeddelande ut:
Changed database context to 'AdventureWorks2022'.
Utdataformat från Transact-SQL förfrågningar
sqlcmd skriver först ut en kolumnrubrik som innehåller de kolumnnamn som anges i listan med val. Kolumnnamnen avgränsas med hjälp av det SQLCMDCOLSEP tecknet. I standardläge är detta ett blanksteg. Om kolumnnamnet är kortare än kolumnbredden fylls utdata med mellanslag upp till nästa kolumn.
Den här raden följs av en avgränsarlinje som är en serie strecktecken. Följande utdata visar ett exempel.
Starta sqlcmd. I kommandotolken sqlcmd skriver du frågan:
USE AdventureWorks2022;
SELECT TOP (2) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
När du trycker på RETURreturneras följande resultatuppsättning.
BusinessEntityID FirstName LastName
---------------- ------------ ----------
285 Syed Abbas
293 Catherine Abel
(2 row(s) affected)
Även om den BusinessEntityID kolumnen bara är fyra tecken bred, har den expanderats för att passa det längre kolumnnamnet. Som standard avslutas utdata med 80 tecken. Den här bredden kan ändras med hjälp av alternativet -w eller genom att ange SQLCMDCOLWIDTH skriptvariabel.
XML-utdataformat
XML-utdata som är resultatet av en FOR XML-sats är utdata, oformaterade, i en kontinuerlig ström.
När du förväntar dig XML-utdata använder du följande kommando: :XML ON.
Anteckning
sqlcmd returnerar felmeddelanden i vanligt format. Felmeddelandena matas också ut i XML-textströmmen i XML-format. Med hjälp av :XML ONvisar sqlcmd inte informationsmeddelanden.
Om du vill inaktivera XML-läget använder du följande kommando: :XML OFF.
Kommandot GO bör inte visas innan kommandot :XML OFF utfärdas eftersom kommandot :XML OFF växlar sqlcmd tillbaka till radorienterade utdata.
XML-data (strömmade) och raduppsättningsdata kan inte blandas. Om kommandot :XML ON inte har utfärdats innan en Transact-SQL-instruktion som matar ut XML-strömmar körs, är utdata förvrängda. När kommandot :XML ON har utfärdats kan du inte köra Transact-SQL instruktioner som matar ut vanliga raduppsättningar.
Anteckning
Kommandot :XML stöder inte instruktionen SET STATISTICS XML.
JSON-utdataformat
När du förväntar dig JSON-utdata använder du följande kommando: :XML ON. Annars innehåller utdata både kolumnnamnet och JSON-texten. Dessa utdata är inte giltiga JSON.
Om du vill inaktivera XML-läget använder du följande kommando: :XML OFF.
Använd följande metoder för att maximera säkerhet och effektivitet.
Använd integrerad säkerhet.
Använd -X[1] i automatiserade miljöer.
Skydda indata- och utdatafiler med hjälp av lämpliga filsystembehörigheter.
För att öka prestandan gör du så mycket i en sqlcmd session som du kan, i stället för i en serie sessioner.
Ange tidsgränsvärden för batch- eller frågekörning högre än du förväntar dig att det tar att köra batchen eller frågan.
Använd följande metoder för att maximera korrektheten:
Använd -V 16 för att logga eventuella allvarlighetsgrad 16-nivåmeddelanden. Allvarlighetsgrad 16-meddelanden anger allmänna fel som kan korrigeras av användaren.
Kontrollera slutkoden och DOS ERRORLEVEL variabeln när processen har avslutats.
sqlcmd returnerar normalt 0; annars ställs ERRORLEVEL in enligt konfigurationen av -V. Med andra ord bör ERRORLEVEL inte förväntas vara samma värde som felnumret som rapporteras från SQL Server. Felnumret är ett SQL Server-specifikt värde som motsvarar systemfunktionen @@ERROR.
ERRORLEVEL är ett sqlcmd--specifikt värde som anger varför sqlcmd avslutades och dess värde påverkas av att ange -b kommandoradsargument.
Att använda -V 16 i kombination med att kontrollera utgångskoden och DOS ERRORLEVEL kan hjälpa till att fånga fel i automatiserade miljöer, särskilt kvalitetsgrindar före en produktversion.
Administrera en SQL Server-databasinfrastruktur för molndatabaser, lokala databaser och hybridrelationsdatabaser med hjälp av microsoft PaaS-relationsdatabaserbjudanden.
Lär dig hur du startar sqlcmd-verktyget, där du kan ange Transact-SQL-instruktioner, systemprocedurer och skriptfiler, i SQLCMD-läge eller i skript och jobb.
Lär dig hur du använder sqlcmd för att köra en Transact-SQL skriptfil. Den kan innehålla Transact-SQL-instruktioner, sqlcmd-kommandon och skriptvariabler.