sqlcmd segédprogram
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database a Microsoft Fabric
Az sqlcmd segédprogram lehetővé teszi Transact-SQL utasítások, rendszereljárások és szkriptfájlok megadását különböző módokon:
- A parancssorban.
- Lekérdezésszerkesztőben SQLCMD módban.
- Windows-szkriptfájlban.
- Egy SQL Server Agent-feladat operációs rendszerbeli (
cmd.exe
) feladatlépésében.
Jegyzet
Bár a Microsoft Entra ID az Azure Active Directory (Azure AD) új neve, a meglévő környezetek megzavarásának megakadályozása érdekében az Azure AD továbbra is megmarad néhány rögzített elemben, például felhasználói felületi mezőkben, kapcsolatszolgáltatókban, hibakódokban és parancsmagokban. Ebben a cikkben a két név felcserélhető.
Megtudhatja, hogy melyik verziót telepítette
Az sqlcmd két verziója létezik:
A
go-mssqldb
-alapú sqlcmd, néha go-sqlcmdstílusú. Ez a verzió egy önálló eszköz, amelyet az SQL Servertől függetlenül tölthet le.Az ODBC-alapú sqlcmd, amely az SQL Serverrel vagy a Microsoft parancssori segédprogramokkal érhető el, valamint a linuxos
mssql-tools
csomag része.
A telepített verzió meghatározásához futtassa a következő utasítást a parancssorban:
sqlcmd "-?"
sqlcmd "-?"
sqlcmd -?
Ha sqlcmd (Go) új verzióját használja, a kimenet a következő példához hasonló:
Version: 1.3.1
Verzió ellenőrzése
A sqlcmd --version
segítségével meghatározhatja, hogy melyik verzió van telepítve. Legalább 1.0.0-s verzióval kell rendelkeznie.
Fontos
A csomagkezelőn keresztül történő sqlcmd (Go) telepítése a környezeti útvonalon lecseréli a sqlcmd (ODBC)-t sqlcmd (Go)-ra. A jelenlegi parancssori munkameneteket be kell zárni, és újra meg kell nyitni ahhoz, hogy ez érvénybe lépjen.
sqlcmd (ODBC) nem lesz eltávolítva, és továbbra is használható a végrehajtható fájl teljes elérési útjának megadásával. A PATH
változót is frissítheti, hogy jelezze, melyik elsőbbséget élvezi. Ehhez a Windows 11-ben nyissa meg a Rendszerbeállításokat, és lépjen a Névjegy > Speciális rendszerbeállításokrészhez. Amikor megnyílik rendszertulajdonságok, válassza a Környezeti változók gombot. Az alsó részén, a Rendszerváltozókalatt válassza az Elérési út lehetőséget, majd a Szerkesztésparancsot. Ha a helyen található sqlcmd (Go) a (C:\Program Files\sqlcmd
az alapértelmezett) van felsorolva a C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn
előtt, akkor a sqlcmd (Go) kerül használatra. Megfordíthatja a sorrendet, hogy sqlcmd (ODBC) legyen ismét az alapértelmezett.
Az sqlcmd letöltése és telepítése
sqlcmd (Go) platformfüggetlenül telepíthető Microsoft Windows, macOS és Linux rendszereken. Előfordulhat, hogy az 1.6-nál újabb verziók nem minden csomagkezelőben érhetők el. A rendelkezésre állásukhoz még nincs becsült dátum.
winget (Windows Package Manager CLI)
Amennyiben még nem rendelkezik vele, telepítse a Windows Package Manager klienst.
Futtassa a következő parancsot sqlcmd (Go) telepítéséhez.
winget install sqlcmd
Csokoládés
Telepítse Chocolatey, ha még nincs telepítve.
Futtassa a következő parancsot sqlcmd (Go) telepítéséhez.
choco install sqlcmd
Közvetlen letöltés
Töltse le a megfelelő
-windows-amd64.zip
vagy-windows-arm.zip
objektumot az sqlcmd (Go) legújabb kiadásából a GitHub kódtárából.Bontsa ki a
sqlcmd.exe
fájlt a letöltött zip mappából.
Előre telepített
Azure Cloud Shell
Az Azure Cloud Shellből kipróbálhatja az sqlcmd segédprogramot, mivel alapértelmezés szerint előre telepítve van:
- A Cloud Shell indítása
Azure Data Studio
Azure Data Studioalkalmazásban az SQLCMD utasítások futtatásához válassza a szerkesztő eszköztárában a SQLCMD engedélyezése opciót.
SQL Server Management Studio (SSMS)
Ha SQLCMD-utasításokat szeretne futtatni SQL Server Management Studio (SSMS) alkalmazásban, válassza az SQLCMD módot a felső navigációs Lekérdezés menü legördülő listájából.
Az SSMS a Microsoft .NET-keretrendszer SqlClient
-t használja a végrehajtáshoz rendszeres és SQLCMD módban a Lekérdezésszerkesztőben . Ha sqlcmd fut a parancssorból, sqlcmd az ODBC-illesztőt használja. Mivel az alapértelmezett beállítások eltérőek lehetnek, előfordulhat, hogy eltérő viselkedés jelenik meg, amikor ugyanazt a lekérdezést SQLCMD módban és az sqlcmd segédprogram SSMS-ben hajtja végre.
Szintaxis
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.
Az sqlcmd szintaxisának és használatának részletesebb információkért lásd ODBC sqlcmd szintaxis.
Az sqlcmd (ODBC) kompatibilitástörő változásai
A sqlcmd (Go) segédprogram számos kapcsolót és viselkedést módosít. A up-to-date list of missing flags for back compatibility, visit the Prioritize implement of back-compat flags GitHub vitafórum.
Az sqlcmd (Go) korábbi verzióiban a
-P
kapcsoló ideiglenesen el lett távolítva, és az SQL Server-hitelesítéshez csak az alábbi mechanizmusokon keresztül lehetett jelszavakat biztosítani:- A
SQLCMDPASSWORD
környezeti változó - A
:CONNECT
parancs - Amikor a rendszer kéri, a felhasználó beírhatja a jelszót a kapcsolat befejezéséhez
- A
-r
0
vagy1
argumentumot igényel-R
kapcsoló el lesz távolítva.-I
kapcsoló el lesz távolítva. Az idézett azonosító viselkedésének letiltásához adjon hozzáSET QUOTED IDENTIFIER OFF
-et a szkriptekhez.-N
mostantól egy sztringértéket használ, amely lehettrue
,false
vagydisable
a titkosítási beállítás megadásához. (default
ugyanaz, mint a paraméter kihagyása)- Ha nincs megadva
-N
és-C
, sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül egyezteti a kiszolgálóval a hitelesítést. - Ha
-N
van megadva, de-C
nem, sqlcmd a kiszolgálótanúsítvány érvényesítését igényli. A titkosításfalse
értéke továbbra is a bejelentkezési csomag titkosításához vezethet. - Ha
-N
és-C
is meg van adva, sqlcmd a titkosítási egyeztetéshez használja az értékeiket. - Az ügyfél-/kiszolgálótitkosítási egyeztetésről további információt MS-TDS PRELOGINtalál.
- Ha nincs megadva
-u
A létrehozott Unicode kimeneti fájlhoz hozzá van írva az UTF-16 Little-Endian byte-order mark (BOM).Bizonyos viselkedések, amelyek a
OSQL
való kompatibilitás fenntartása érdekében maradtak fenn, módosulhatnak, például egyes adattípusok oszlopfejléceinek igazítása.Minden parancsnak el kell férnie egy sorban, még
EXIT
is. Az interaktív mód nem ellenőrzi a parancsok nyitott zárójeleit vagy idézőjeleit, és nem kéri az egymást követő sorokat. Ez a viselkedés eltér az ODBC-verziótól, így aEXIT(query)
által futtatott lekérdezés több sorra is kiterjedhet.
Az sqlcmd (Go) segédprogram kapcsolatai TCP-kapcsolatokra korlátozódnak. A nevesített csövek jelenleg nem támogatottak a go-mssqldb
meghajtóban.
Erősítés
:Connect
mostantól választható-G
paraméter az Azure SQL Database egyik hitelesítési módszerének kiválasztásához :SqlAuthentication
,ActiveDirectoryDefault
,ActiveDirectoryIntegrated
,ActiveDirectoryServicePrincipal
,ActiveDirectoryManagedIdentity
,ActiveDirectoryPassword
. További információ: Microsoft Entra-hitelesítés. Ha-G
nincs megadva, a rendszer integrált biztonságot vagy SQL Server-hitelesítést használ egy-U
felhasználóneves paraméter meglététől függően.Az új
--driver-logging-level
parancssori paraméter lehetővé teszi, hogy megtekintse ago-mssqldb
illesztőprogram nyomkövetési adatait. A64
használatával tekintse meg az összes nyomot.sqlcmd mostantól függőleges formátumban is kinyomtathatja az eredményeket. A beállításhoz használja az új
-F vertical
parancssori kapcsolót. ASQLCMDFORMAT
szkriptelési változó is szabályozza azt.
Parancssori beállítások
Bejelentkezéssel kapcsolatos beállítások
-Egy
Dedikált rendszergazdai kapcsolattal (DAC) jelentkezik be az SQL Serverre. Ez a kapcsolat a kiszolgáló hibaelhárítására szolgál. Ez a kapcsolat csak a DAC-t támogató kiszolgálószámítógépekkel működik. Ha a DAC nem érhető el, sqlcmd hibaüzenetet generál, majd kilép. További információ a DAC-ról: Diagnosztikai kapcsolat adatbázis-rendszergazdáknak. A -A
beállítás nem támogatott a -G
beállítással. Ha -A
használatával csatlakozik az Azure SQL Database-hez, rendszergazdának kell lennie a logikai SQL-kiszolgálón. A DAC nem érhető el a Microsoft Entra rendszergazdái számára.
-C
Ezt a beállítást az ügyfél úgy konfigurálja, hogy a kiszolgálótanúsítványt hitelesítés nélkül implicit módon megbízhatónak tekintse. Ez a beállítás egyenértékű a ADO.NET TRUSTSERVERCERTIFICATE = true
beállítással.
Az sqlcmd (Go) segédprogramra a következő feltételek vonatkoznak:
- Ha nincs megadva
-N
és-C
, sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül egyezteti a kiszolgálóval a hitelesítést. - Ha
-N
van megadva, de-C
nem, sqlcmd a kiszolgálótanúsítvány érvényesítését igényli. A titkosításfalse
értéke továbbra is a bejelentkezési csomag titkosításához vezethet. - Ha
-N
és-C
is meg van adva, sqlcmd a titkosítási egyeztetéshez használja az értékeiket.
-d db_name
Az sqlcmd indításakor egy USE <db_name>
utasítást ad ki. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDDBNAME
. Ez a paraméter a kezdeti adatbázist adja meg. Az alapértelmezett a bejelentkezéshez tartozó alapértelmezett adatbázis tulajdonsága. Ha az adatbázis nem létezik, hibaüzenet jelenik meg, és sqlcmd kilép.
-D
A -S
számára megadott kiszolgálónevet gazdanév helyett DSN-ként értelmezi. További információkért, tekintse meg a DSN támogatást az sqlcmd és bcp programokban, valamint a kapcsolódási lehetőségeket az sqlcmd-hoz.
Jegyzet
A -D
lehetőség csak Linux és macOS rendszerű ügyfeleken érhető el. Windows-ügyfeleken korábban egy elavult beállításra hivatkozott, amelyet eltávolítottak, és figyelmen kívül hagytak.
-l bejelentkezési_időtúllépés
Megadja, hogy hány másodperc telik el, mielőtt időtúllépés történik az sqlcmd ODBC-illesztőhöz való bejelentkezéskor, amikor megpróbál csatlakozni egy kiszolgálóhoz. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDLOGINTIMEOUT
. Az alapértelmezett időtúllépés az sqlcmd bejelentkezésnél 8 másodperc. Ha a -G
lehetőséget használja az Azure SQL Database-hez vagy az Azure Synapse Analyticshez való csatlakozáshoz és a Microsoft Entra-azonosítóval történő hitelesítéshez, legalább 30 másodperces időtúllépési érték javasolt. A bejelentkezési időtúllépésnek 0
és 65534
közötti számnak kell lennie. Ha a megadott érték nem numerikus, vagy nem esik ebbe a tartományba, sqlcmd hibaüzenetet generál. A 0
értéke azt határozza meg, hogy az időtúllépés végtelen legyen.
-E
Megbízható kapcsolatot használ a felhasználónév és jelszó használata helyett az SQL Serverre való bejelentkezéshez. Alapértelmezés szerint -E
megadása nélkül sqlcmd a megbízható kapcsolati lehetőséget használja.
A -E
beállítás figyelmen kívül hagyja a felhasználónév és a jelszó környezeti változójának lehetséges beállításait, például a SQLCMDPASSWORD
. Ha a -E
beállítást a -U
vagy a -P
beállítással együtt használja, hibaüzenet jelenik meg.
-g
Az oszloptitkosítás beállítása Enabled
-ra. További információ: Always Encrypted. Csak a Windows tanúsítványtárolóban tárolt főkulcsok támogatottak. A -g
beállításhoz legalább sqlcmd13.1-esverzió szükséges. A verzió meghatározásához hajtsa végre a(z) sqlcmd -?
-et.
-G
Ezt a lehetőséget az ügyfél használja az Azure SQL Database-hez vagy az Azure Synapse Analyticshez való csatlakozáskor annak megadásához, hogy a felhasználó hitelesítése Microsoft Entra-hitelesítéssel történjen. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDUSEAAD = true
. A -G
beállításhoz legalább sqlcmd13.1-esverzió szükséges. A sqlcmd -?
végrehajtásával határozza meg a verzióját. További információ: Csatlakozás az SQL Database-hez vagy az Azure Synapse Analyticshez Microsoft Entra-hitelesítéssel. A -A
beállítás nem támogatott a -G
beállítással.
A -G
lehetőség csak az Azure SQL Database-re és az Azure Synapse Analyticsre vonatkozik.
A Microsoft Entra interaktív hitelesítése jelenleg nem támogatott Linux vagy macOS rendszeren. A Microsoft Entra integrált hitelesítéséhez az SQL Server 17.6.1-es vagy újabb verziójához Microsoft ODBC Driver 17 szükséges, valamint egy megfelelően Konfigurált Kerberos-környezet.
További információért a Microsoft Entra-hitelesítéssel kapcsolatban lásd: Microsoft Entra-hitelesítés az sqlcmd-ben.
-H workstation_name
Egy munkaállomás neve. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDWORKSTATION
. A munkaállomás neve a sys.sysprocesses
katalógusnézet hostname
oszlopában található, és a tárolt eljárás sp_who
használatával adható vissza. Ha ez a beállítás nincs megadva, az alapértelmezett beállítás az aktuális számítógépnév. Ez a név különböző sqlcmd munkamenetek azonosítására használható.
-j
Nyers hibaüzeneteket jelenít meg a képernyőn.
-K application_intent
Deklarálja az alkalmazás számítási feladatainak típusát a kiszolgálóhoz való csatlakozáskor. Az egyetlen jelenleg támogatott érték a ReadOnly
. Ha nincs megadva -K
, sqlcmd nem támogatja a másodlagos replikával való kapcsolatot egy rendelkezésre állási csoportban. További információ: Aktív másodlagos elemek: Olvasható másodlagos replikája (Always On Elérhetőségi csoportok).
-M multisubnet_failover
Mindig adja meg a -M
, amikor egy SQL Server rendelkezésre állási csoport vagy egy SQL Server feladatátvevőfürt-példány rendelkezésre állási csoportfigyelőjével csatlakozik.
-M
gyorsabb észlelést és kapcsolatot biztosít az (jelenleg) aktív kiszolgálóval. Ha nincs megadva -M
, -M
ki van kapcsolva. További információ a listenerekről, az ügyfélkapcsolódásról, a feladatátvételi, rendelkezésre állási csoportok (SQL Server)létrehozásáról és konfigurálásáról, feladatátvételi fürtözésről és Always On rendelkezésre állási csoportokról (SQL Server), valamint aktív másodlagos, olvasható replikákról (Always On rendelkezésre állási csoportok).
-N
Az ügyfél ezt a lehetőséget használja titkosított kapcsolat kéréséhez.
Az sqlcmd (Go) segédprogram esetében -N
most egy sztringértéket vesz fel, amely lehet true
, false
vagy disable
a titkosítási választás megadásához. (default
ugyanaz, mint a paraméter kihagyása):
- Ha nincs megadva
-N
és-C
, sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül egyezteti a kiszolgálóval a hitelesítést. - Ha
-N
van megadva, de-C
nem, sqlcmd a kiszolgálótanúsítvány érvényesítését igényli. A titkosításfalse
értéke továbbra is a bejelentkezési csomag titkosításához vezethet. - Ha
-N
és-C
is meg van adva, sqlcmd a titkosítási egyeztetéshez használja az értékeiket.
-P jelszó
Felhasználó által megadott jelszó. A jelszavak megkülönböztetik a kis- és nagybetűket. Ha a -U
beállítást használja, és nem használja a -P
beállítást, és a SQLCMDPASSWORD
környezeti változó nincs beállítva, sqlcmd kéri a felhasználótól a jelszót. Nem javasoljuk null (üres) jelszó használatát, de a null jelszót a paraméter értékéhez (""
) egy összefüggő idézőjelpár használatával adhatja meg.
Fontos
A -P
használata nem biztonságos. Ne adja meg a jelszót a parancssorban. Másik lehetőségként használja a SQLCMDPASSWORD
környezeti változót, vagy interaktívan adja meg a jelszót a -P
lehetőség kihagyásával.
Javasoljuk, hogy használjon erős jelszót.
A jelszókérés a következő módon jelenik meg a konzolra való nyomtatással: Password:
A felhasználói bevitel el van rejtve. Ez azt jelenti, hogy semmi sem jelenik meg, és a kurzor a helyén marad.
A SQLCMDPASSWORD
környezeti változó lehetővé teszi az aktuális munkamenet alapértelmezett jelszavának beállítását. Ezért a jelszavakat nem kell szigorúan kötegelt fájlokba kódoltként megadni. Az alábbi példa először beállítja a SQLCMDPASSWORD
változót a parancssorban, majd hozzáfér az sqlcmd segédprogramhoz.
A parancssorba írja be a következőt:
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
Ha a felhasználónév és a jelszó kombinációja helytelen, hibaüzenet jelenik meg.
Jegyzet
A OSQLPASSWORD
környezeti változó megtartva a visszamenőleges kompatibilitás érdekében. A SQLCMDPASSWORD
környezeti változó elsőbbséget élvez a OSQLPASSWORD
környezeti változóval szemben. Ez azt jelenti, hogy sqlcmd és osql interferencia nélkül használhatók egymás mellett. A régi szkriptek továbbra is működnek.
Ha a -P
opciót a -E
opcióval használja, hibaüzenet keletkezik.
Ha a -P
beállítást egynél több argumentum követi, hibaüzenet jelenik meg, és a program kilép.
A speciális karaktereket tartalmazó jelszó hibaüzenetet hozhat létre. A speciális karaktereket el kell kerülni, amikor a -P
-t használja, vagy inkább a SQLCMDPASSWORD
környezeti változót kell használnia.
-S [protokoll:]kiszolgáló[\instance_name][,port]
Megadja az SQL Server azon példányát, amelyhez csatlakozni szeretne. Beállítja a sqlcmd szkriptelési változót SQLCMDSERVER
.
Adja meg a server_name az SQL Server alapértelmezett példányához való csatlakozáshoz az adott kiszolgálószámítógépen. Adja meg server_name[\instance_name] parancsot az SQL Server egy nevesített példányához való csatlakozáshoz a kiszolgálón. Ha nincs megadva kiszolgálószámítógép, sqlcmd csatlakozik a helyi számítógépen található SQL Server alapértelmezett példányához. Ez a beállítás akkor szükséges, ha sqlcmd-t hajt végre egy távoli számítógépről a hálózaton keresztül.
protokoll lehet tcp
(TCP/IP), lpc
(megosztott memória) vagy np
(elnevezett csövek).
Ha nem ad meg server_name[\instance_name] értéket az sqlcmd indításakor, az SQL Server a SQLCMDSERVER
környezeti változót ellenőrzi és használja.
Jegyzet
A OSQLSERVER
környezeti változó megtartva a visszamenőleges kompatibilitás érdekében. A SQLCMDSERVER
környezeti változó elsőbbséget élvez a OSQLSERVER
környezeti változóval szemben. Ez azt jelenti, hogy sqlcmd és osql interferencia nélkül használhatók egymás mellett. A régi szkriptek továbbra is működnek.
-U login_id
A bejelentkezési név vagy az adatbázisba foglalt felhasználónév. A tartalmazott adatbázis felhasználóinak meg kell adniuk az adatbázis neve opciót (-d
).
Jegyzet
A OSQLUSER
környezeti változó megtartva a visszamenőleges kompatibilitás érdekében. A SQLCMDUSER
környezeti változó elsőbbséget élvez a OSQLUSER
környezeti változóval szemben. Ez azt jelenti, hogy sqlcmd és osql interferencia nélkül használhatók egymás mellett. A régi szkriptek továbbra is működnek.
Ha nem adja meg a -U
vagy a -P
beállítást, sqlcmd a Windows hitelesítési móddal próbál csatlakozni. A hitelesítés az sqlcmd futtató felhasználó Windows-fiókján alapul.
Ha a -U
beállítást használja a -E
lehetőséggel (a cikk későbbi részében ismertetjük), hibaüzenet jön létre. Ha a -U
beállítást egynél több argumentum követi, hibaüzenet jelenik meg, és a program kilép.
-z új_jelszó
A jelszó módosítása:
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
-Z uj_jelszo
A jelszó módosítása és kilépés:
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
Bemeneti/kimeneti beállítások
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Megadja a bemeneti és kimeneti kódlapokat. A kódlapszám egy numerikus érték, amely egy telepített Windows-kódlapot határoz meg.
Kódlapkonvertálási szabályok:
Ha nincs megadva kódlap, sqlcmd az aktuális kódlapot használja mind a bemeneti, mind a kimeneti fájlokhoz, kivéve, ha a bemeneti fájl Unicode-fájl, amely esetben nincs szükség átalakításra.
sqlcmd automatikusan felismeri a big endian és a little-endian Unicode bemeneti fájlokat is. Ha a
-u
beállítás meg van adva, a kimenet mindig little-endian Unicode.Ha nincs megadva kimeneti fájl, a kimeneti kódlap a konzol kódlapja. Ezzel a módszerrel a kimenet megfelelően jelenik meg a konzolon.
A rendszer feltételezi, hogy több bemeneti fájl is ugyanahhoz a kódlaphoz tartoznak. Unicode- és nem Unicode-bemeneti fájlok keverhetők.
Írja be chcp
a parancssorba a cmd.exe
kódlapjának ellenőrzéséhez.
-i input_file[,input_file2...]
Azonosítja azt a fájlt, amely Transact-SQL utasítások vagy tárolt eljárások kötegét tartalmazza. Több fájl is megadható, amelyek olvasása és feldolgozása sorrendben történik. Ne használjon szóközöket a fájlnevek között.
sqlcmd először ellenőrzi, hogy az összes megadott fájl létezik-e. Ha egy vagy több fájl nem létezik, sqlcmd kilép. A -i
és a -Q
/-q
lehetőségek kölcsönösen kizárják egymást.
Jegyzet
Ha a -i
lehetőséget, majd egy vagy több további paramétert használ, akkor szóközt kell használnia a paraméter és az érték között. Ez egy ismert probléma a sqlcmd (Go) esetében.
Útvonal példák:
-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"
A szóközöket tartalmazó fájl elérési útjait idézőjelek közé kell foglalni.
Ez a beállítás többször is használható:
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
-o output_file
Az sqlcmd kimenetét fogadó fájlt azonosítja.
Ha -u
van megadva, a output_file Unicode formátumban lesz tárolva. Ha a fájlnév érvénytelen, hibaüzenet jelenik meg, és sqlcmd kilép.
sqlcmd nem támogatja több sqlcmd folyamat egyidejű írását ugyanarra a fájlra. A fájlkimenet sérült vagy helytelen. A -f
lehetőség a fájlformátumok szempontjából is fontos. Ez a fájl akkor jön létre, ha nem létezik. Egy korábbi sqlcmd munkamenet azonos nevű fájlja felülíródik. Az itt megadott fájl nem a stdout
fájl. Ha egy stdout
fájl van megadva, a rendszer nem használja ezt a fájlt.
Elérésiút-példák:
-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"
A szóközöket tartalmazó fájl elérési útjait idézőjelek közé kell foglalni.
-r[0 | 1]
Átirányítja a hibaüzenet kimenetét a képernyőre (stderr
). Ha nem ad meg paramétert, vagy ha 0
ad meg, csak a 11-es vagy annál magasabb súlyosságú hibaüzenetek lesznek átirányítva. Ha 1
ad meg, a rendszer átirányítja az összes hibaüzenet kimenetét, beleértve a PRINT
is. Ez a beállítás nincs hatással a -o
használata esetén. Alapértelmezés szerint a rendszer stdout
küld üzeneteket.
Jegyzet
Az sqlcmd (Go) segédprogramhoz -r
0
vagy 1
argumentum szükséges.
-R
Csak a következőkre vonatkozik: ODBC sqlcmd.
Az sqlcmd lokalizálja az SQL Serverről az ügyfél területi beállításai alapján lekért numerikus, pénznem-, dátum- és időoszlopokat. Alapértelmezés szerint ezek az oszlopok a kiszolgáló területi beállításaival jelennek meg.
-u
Megadja, hogy a output_file Unicode formátumban legyen tárolva, a input_fileformátumától függetlenül.
Jegyzet
Az sqlcmd (Go) segédprogram esetén a létrehozott Unicode kimeneti fájlhoz az UTF-16 Little-Endian bájtsorrendi jel (BOM) kerül írásra.
Lekérdezés-végrehajtási beállítások
-e
Bemeneti szkripteket ír a szabványos kimeneti eszközre (stdout
).
-Én
Csak a következőkre vonatkozik: ODBC sqlcmd.
Beállítja a SET QUOTED_IDENTIFIER
kapcsolat opciót ON
-re. Alapértelmezés szerint OFF
. További információ: SET QUOTED_IDENTIFIER (Transact-SQL).
jegyzet
Ha le szeretné tiltani az idézett azonosító viselkedését az sqlcmd (Go) segédprogramban, adjon hozzá SET QUOTED IDENTIFIER OFF
a szkriptekhez.
-q "parancsmag-lekérdezés"
Lekérdezést hajt végre, amikor sqlcmd elindul, de nem lép ki sqlcmd, amikor a lekérdezés befejeződött. Többszörös pontosvesszővel elválasztott lekérdezések végrehajthatók. Használjon idézőjeleket a lekérdezés körül az alábbi példában látható módon.
A parancssorba írja be a következőt:
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;"
Fontos
Ne használja a GO
terminátort a lekérdezésben.
Ha -b
van megadva ezzel a beállítással együtt, sqlcmd hiba esetén kilép.
-b
ebben a cikkben máshol is ismertetjük.
-Q "parancsmag-lekérdezés"
Lekérdezést hajt végre, amikor sqlcmd elindul, majd azonnal kilép sqlcmd. Több, pontosvesszővel elválasztott lekérdezés is végrehajtható.
Használjon idézőjeleket a lekérdezés körül az alábbi példában látható módon.
A parancssorba írja be a következőt:
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;"
Fontos
Ne használja a GO
terminátort a lekérdezésben.
Ha -b
van megadva ezzel a beállítással együtt, sqlcmd hibaüzenet jelenik meg.
-b
ebben a cikkben máshol is ismertetjük.
-t lekérdezési_késleltetés
Meghatározza, hogy egy parancs (vagy Transact-SQL utasítás) hány másodperc után lép időtúllépésbe. Ez a beállítás az sqlcmd szkriptelési változót SQLCMDSTATTIMEOUT
állítja be. Ha nincs megadva query_timeout érték, a parancs nem időtúllépést hajt végre. A query_timeout1
és 65534
közötti számnak kell lennie. Ha a megadott érték nem numerikus, vagy nem ebbe a tartományba esik, sqlcmd hibaüzenetet generál.
Jegyzet
A tényleges időtúllépési érték néhány másodperccel eltérhet a megadott query_timeout értéktől.
-v var = érték [ var = érték... ]
Létrehoz egy sqlcmd szkriptelési változót, amely használható egy sqlcmd szkriptben. Ha az érték szóközöket tartalmaz, akkor idézőjelek közé foglalja az értéket. Több <var>="<value>"
értéket is megadhat. Ha a megadott értékek bármelyikében hiba lép fel, sqlcmd hibaüzenetet generál, majd kilép.
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
-x
Az sqlcmd a szkriptelési változók figyelmen kívül hagyását okozza. Ez a paraméter akkor hasznos, ha egy szkript számos olyan INSERT
utasítást tartalmaz, amelyek olyan sztringeket tartalmazhatnak, amelyek formátuma megegyezik a normál változókkal, például $(<variable_name>)
.
Formázási beállítások
-h fejlécek
Megadja az oszlopfejlécek között nyomtatandó sorok számát. Az alapértelmezett beállítás a fejlécek nyomtatása minden lekérdezési eredménykészlethez. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDHEADERS
. A -1
használatával megadhatja, hogy a fejlécek ne legyenek kinyomtatva. Minden érvénytelen érték miatt sqlcmd hibaüzenetet generál, majd kilép.
-k [1 | 2]
Eltávolítja az összes vezérlőkaraktert, például a tabulátorokat és az új sorkaraktereket a kimenetből. Ez a paraméter megőrzi az oszlopformázást az adatok visszaadásakor.
-
-k
eltávolítja a vezérlőkaraktereket. -
-k1
minden vezérlőkaraktert lecserél egy szóközre. -
-k2
az egymást követő vezérlőkaraktereket egyetlen szóközre cseréli.
-s col_separator
Az oszlopelválasztó karaktert adja meg. Az alapértelmezett érték egy üres terület. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDCOLSEP
. Ha olyan karaktereket szeretne használni, amelyek különleges jelentéssel bírnak az operációs rendszer számára, például az ampersand (&
) vagy pontosvessző (;
), idézőjelek közé ("
) foglalja a karaktert. Az oszlopelválasztó bármilyen 8 bites karakter lehet.
-w képernyő szélesség
Megadja a kimenet képernyőszélességét. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDCOLWIDTH
. Az oszlopszélességnek 8
-nél nagyobb és 65536
-nél kisebb számnak kell lennie. Ha a megadott oszlopszélesség nem esik ebbe a tartományba, sqlcmd hibaüzenetet hoz létre. Az alapértelmezett szélesség 80 karakter. Ha egy kimeneti sor túllépi a megadott oszlopszélességű értéket, az a következő sorra tördel.
-W
Ez a beállítás eltávolítja a záró szóközöket egy oszlopból. Ezt a lehetőséget a -s
beállítással együtt használhatja egy másik alkalmazásba exportálandó adatok előkészítésekor. Nem használható a -y
vagy -Y
beállításokkal.
-y variable_length_type_display_width
Beállítja sqlcmd szkriptelési változót SQLCMDMAXVARTYPEWIDTH
. Az alapértelmezett érték a 256
. Korlátozza a nagy változóhosszúságú adattípusokhoz visszaadott karakterek számát:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- xml
- felhasználó által definiált adattípusok (UDT-k)
- szöveg
- ntext
- kép
Az UDT-k a megvalósítástól függően rögzített hosszúságúak lehetnek. Ha egy rögzített hosszúságú UDT rövidebb, mint display_width, a visszaadott UDT értéke nem lesz hatással. Ha azonban a hossz hosszabb, mint display_width, a kimenet csonkolt lesz.
Figyelem
A -y 0
beállítást csak rendkívüli óvatossággal használja, mert a visszaadott adatok méretétől függően jelentős teljesítményproblémákat okozhat mind a kiszolgálón, mind a hálózaton.
-Y rögzített_hosszúságú_típus_kijelző_szélesség
Beállítja sqlcmd szkriptelési változót SQLCMDMAXFIXEDTYPEWIDTH
. Az alapértelmezett érték a 0
(korlátlan). A következő adattípusokhoz visszaadott karakterek számát korlátozza:
- karakter (n), ahol 1 <= n<= 8000
- nchar(n), ahol 1 <= n<= 4000
- varchar(n), ahol 1 <= n<= 8000
- nvarchar(n), ahol 1 <= n<= 4000
- varbinary(n), ahol 1 <= n<= 4000
- sql_variant
Hibajelentési lehetőségek
-b
Megadja, hogy sqlcmd kilép, és hiba esetén DOS ERRORLEVEL
értéket ad vissza. A ERRORLEVEL
változónak visszaadott érték 1
, ha az SQL Server hibaüzenetének súlyossági szintje 10-nél nagyobb; ellenkező esetben a visszaadott érték 0
. Ha a -V
beállítás a -b
mellett van beállítva, sqlcmd nem jelent hibát, ha a súlyossági szint alacsonyabb, mint a -V
használatával beállított értékek. A parancssori kötegfájlok tesztelhetik a ERRORLEVEL
értékét, és megfelelően kezelhetik a hibát.
sqlcmd nem jelzi a 10-es súlyossági szintű (tájékoztató üzenetek) hibákat.
Ha a sqlcmd szkript helytelen megjegyzést, vagy szintaxishibát tartalmaz, vagy hiányzik belőle egy szkriptelési változó, a visszaadott eredmény ERRORLEVEL
1
.
-m error_level
Ez a funkció szabályozza, hogy mely hibaüzeneteket küldi a rendszer a stdout
-ra. A rendszer olyan üzeneteket küld, amelyek súlyossági szintje nagyobb vagy egyenlő ennél a szintnél. Ha ez az érték -1
értékre van állítva, a rendszer minden üzenetet elküld, beleértve az információs üzeneteket is. A -m
és a -1
között nem engedélyezett szóközök használata. Például -m-1
érvényes, és -m -1
nem.
Ez a beállítás a sqlcmd szkriptelési változót is beállítja SQLCMDERRORLEVEL
. Ez a változó alapértelmezett értéke 0
.
-V hiba súlyossági szint
A ERRORLEVEL
változó beállításához használt súlyossági szintet szabályozza. A ERRORLEVEL
megadott értéknél nagyobb vagy azzal egyenlő súlyossági szinttel rendelkező hibaüzenetek. A 0-nál kisebb értékek 0
ként jelennek meg. A Batch- és CMD-fájlok a ERRORLEVEL
változó értékének tesztelésére használhatók.
Egyéb beállítások
-a csomag_méret
Eltérő méretű csomagot kér. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDPACKETSIZE
.
packet_size512
és 32767
közötti értéknek kell lennie. Az alapértelmezett érték a 4096
. A nagyobb csomagméret javíthatja azon szkriptek végrehajtását, amelyek GO
parancsok között sok Transact-SQL utasítással rendelkeznek. Nagyobb csomagméretet kérhet. Ha azonban a kérés megtagadva, sqlcmd a kiszolgáló alapértelmezett csomagméretét használja.
-c batch_terminator
A köteg terminátorát adja meg. Alapértelmezés szerint a parancsok leállnak, és az SQL Serverre küldik a GO
szót egy sorba beírva. A kötegfolyamat lezáró visszaállításakor ne használjon Transact-SQL fenntartott kulcsszavakat vagy az operációs rendszer számára speciális jelentéssel bíró karaktereket. Még akkor sem, ha fordított perjellel vannak megelőzve.
-L[c]
Felsorolja a helyileg konfigurált kiszolgálószámítógépeket, valamint a hálózaton sugárzott kiszolgálószámítógépek nevét. Ez a paraméter nem használható más paraméterekkel kombinálva. A felsorolt kiszolgálói számítógépek maximális száma 3000. Ha a kiszolgálólistát a puffer mérete miatt csonkolja, figyelmeztető üzenet jelenik meg.
Jegyzet
A hálózatokon való műsorszórás jellege miatt előfordulhat, hogy sqlcmd nem kap időben választ az összes kiszolgálótól. Ezért a visszaadott kiszolgálók listája a beállítás minden egyes meghívása esetén eltérő lehet.
Ha az opcionális paraméter c
van megadva, a kimenet a Servers:
fejlécsor nélkül jelenik meg, és minden kiszolgálósor bevezető szóközök nélkül jelenik meg. Ezt a bemutatót tiszta kimenetnek nevezzük. A tiszta kimenet javítja a szkriptnyelvek feldolgozási teljesítményét.
-p[1]
Minden eredményhalmaz teljesítménystatisztikáit nyomtatja ki. Az alábbi megjelenítés a teljesítménystatisztikák formátumára mutat példát:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)
Hol?
-
x
= Az SQL Server által feldolgozott tranzakciók száma. -
t1
= Az összes tranzakció teljes ideje. -
t2
= Egyetlen tranzakció átlagos ideje. -
t3
= A másodpercenkénti tranzakciók átlagos száma.
Minden időezredmásodpercben van.
Ha meg van adva az opcionális 1
paraméter, a statisztikai adatok kimeneti formátuma kettősponttal elválasztott formátumban van, amely könnyen importálható egy számolótáblába vagy egy szkripttel feldolgozható.
Ha az opcionális paraméter nem 1
érték, a rendszer hibát generál, és sqlcmd kilép.
-X[1]
Azokat a parancsokat tiltja le, amelyek veszélyeztethetik a rendszer biztonságát, amikor a sqlcmd kötegfájlból lesz végrehajtva. A letiltott parancsok továbbra is felismerve vannak; sqlcmd figyelmeztetést ad ki, és folytatódik. Ha meg van adva az opcionális 1
paraméter, sqlcmd hibaüzenetet generál, majd kilép. A -X
beállítás használatakor a következő parancsok lesznek letiltva:
ED
-
!!
parancs
Ha a -X
beállítás meg van adva, megakadályozza a környezeti változók átadását sqlcmd. Emellett megakadályozza a SQLCMDINI
szkriptelési változóval megadott indítási szkript végrehajtását. Az sqlcmd szkriptelési változók további információ: sqlcmd – Használat szkriptelési változókkal.
-?
Megjeleníti az sqlcmd verzióját és egy összefoglalót a sqlcmd szintaxis opcióiról.
Jegyzet
MacOS rendszeren futtassa inkább a sqlcmd '-?'
(idézőjelekkel).
Megjegyzések
A beállításokat nem kell használni a szintaxis szakaszban látható sorrendben.
Jegyzet
Ha a -i
lehetőséget, majd egy vagy több további paramétert használ, akkor szóközt kell használnia a paraméter és az érték között. Ez egy ismert probléma sqlcmd (Go) esetében.
Ha több eredményt ad vissza, sqlcmd egy üres sort nyomtat ki a köteg egyes eredményhalmazai között. Ezenkívül a <x> rows affected
üzenet nem jelenik meg, ha az nem vonatkozik a végrehajtott utasításra.
Ha interaktívan szeretné használni sqlcmd, írja be a parancssorba a sqlcmd
a cikkben korábban ismertetett lehetőségek bármelyikével. További információ: Az sqlcmd segédprogram használata
Jegyzet
A beállítások -l
, -Q
, -Z
vagy -i
sqlcmd kilépését okozzák a végrehajtás után.
Az sqlcmd parancssori teljes hosszát (például cmd.exe
vagy bash
) az alapul szolgáló operációs rendszer határozza meg, beleértve az összes argumentumot és kiterjesztett változót.
Változó elsőbbsége (alacsonytól magasig)
- Rendszerszintű környezeti változók
- Felhasználói szintű környezeti változók
- Az sqlcmd futtatása előtt a parancssorban beállított parancshéj (
SET X=Y
) beállítása a parancssorban történik. sqlcmd -v X=Y
:Setvar X Y
Jegyzet
A környezeti változók megtekintéséhez nyissa meg Vezérlőpult, nyissa meg Rendszer, majd válassza a Speciális lapot.
sqlcmd szkriptelési változók
Változó | Kapcsolódó opció | R/W | Alapértelmezett |
---|---|---|---|
SQLCMDUSER | -U | R | "" |
SQLCMDPASSWORD | -P | -- | "" |
SQLCMDSERVER | -S | R | AlapértelmezettHelyiPéldány |
SQLCMDWORKSTATION | -H | R | Számítógépnév |
SQLCMDDBNAME | -d | R | "" |
SQLCMDLOGINTIMEOUT | -l | R/W | "8" (másodperc) |
SQLCMDSTATTIMEOUT | -t | R/W | "0" = várakozás határozatlan ideig |
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" = korlátlan |
SQLCMDEDITOR | R/W | edit.com | |
SQLCMDINI | R | "" | |
SQLCMDUSEAAD | -G | R/W | "" |
SQLCMDUSER
, SQLCMDPASSWORD
és SQLCMDSERVER
:Connect
használatakor vannak beállítva.
R
azt jelzi, hogy az érték csak egyszer állítható be a program inicializálása során.
R/W
azt jelzi, hogy az érték a :setvar
paranccsal módosítható, és az azt követő parancsokat az új érték befolyásolja.
sqlcmd parancsok
Az sqlcmd Transact-SQL utasítások mellett a következő parancsok is elérhetők:
GO
[ darabszám ]
:List
[:]RESET
:Error
[:]ED
:Out
[:]!!
:Perftrace
[:]QUIT
:Connect
[:]EXIT
:On Error
:r
:Help
:ServerList
:XML [ ON | OFF ]
:Setvar
:Listvar
Vegye figyelembe a következőket sqlcmd parancsok használatakor:
Minden sqlcmd parancsnak, kivéve
GO
, kettősponttal (:
) kell kezdődniük.Fontos
A meglévő osql- szkriptekkel való visszamenőleges kompatibilitás fenntartása érdekében a parancsok egy része a kettőspont nélkül lesz felismerve, amelyet a
:
jelez.sqlcmd parancsok csak akkor lesznek felismerve, ha egy sor elején jelennek meg.
Minden sqlcmd parancs nem érzékeny a nagy- és kisbetűkre.
Minden parancsnak külön sorban kell lennie. A parancsokat nem lehet Transact-SQL utasítással vagy más paranccsal követni.
A parancsok végrehajtása azonnal történik. Nem kerülnek a végrehajtási pufferbe, mint ahogy a Transact-SQL utasítások.
Parancsok szerkesztése
[:]ED
Elindítja a szövegszerkesztőt. Ez a szerkesztő az aktuális Transact-SQL köteg vagy az utolsó végrehajtott köteg szerkesztésére használható. Az utolsó végrehajtott köteg szerkesztéséhez a ED
parancsot közvetlenül az utolsó köteg végrehajtása után kell beírni.
A szövegszerkesztőt a SQLCMDEDITOR
környezeti változó határozza meg. Az alapértelmezett szerkesztő Edit
. A szerkesztő módosításához állítsa be a SQLCMDEDITOR
környezeti változót. Ha például a szerkesztőt a Microsoft Jegyzettömbre szeretné állítani, írja be a parancssorba a következőt:
SET SQLCMDEDITOR=notepad
[:]VISSZAÁLLÍTÁS
Törli a nyilatkozat gyorsítótárát.
:Lista
Kinyomtatja az utasítások gyorsítótárának tartalmát.
Változók
:Setvar <var> [ "érték" ]
Definiálja sqlcmd szkriptelési változókat. A szkriptelési változók formátuma a következő: $(VARNAME)
.
A változónevek nem érzékenyek a kis- és nagybetűkre.
A szkriptelési változók a következő módokon állíthatók be:
Implicit módon parancssori lehetőség használata. A
-l
beállítás például beállítja azSQLCMDLOGINTIMEOUT
sqlcmd változót.Kifejezetten a
:Setvar
parancs használatával.Környezeti változó definiálásával sqlcmdfuttatása előtt.
Jegyzet
A -X
beállítás megakadályozza a környezeti változók átadását sqlcmd.
Ha egy :Setvar
használatával definiált változónak és egy környezeti változónak ugyanaz a neve, akkor a :Setvar
használatával definiált változó elsőbbséget élvez.
A változónevek nem tartalmazhatnak üres szóköz karaktereket.
A változónevek nem vehetik fel ugyanazt az alakot, mint egy változókifejezés, például $(var)
.
Ha a szkriptelési változó sztringértéke üres szóközöket tartalmaz, az értéket idézőjelek közé kell foglalni. Ha nincs megadva egy szkriptelési változó értéke, a szkriptelési változó el lesz dobva.
:Listvar
Megjeleníti az aktuálisan beállított szkriptelési változók listáját.
Jegyzet
Csak a sqlcmdáltal beállított szkriptelési változók jelennek meg, valamint azok, amelyek a :Setvar
paranccsal vannak beállítva.
Kimeneti parancsok
:Hiba <fájlnév> | STDERR | STDOUT
Az összes hibakimenet átirányítása a fájlnéváltal megadott fájlra, stderr
vagy stdout
. A :Error
parancs többször is megjelenhet egy szkriptben. Alapértelmezés szerint a hiba kimenet a stderr
-ra kerül.
fájlnév
Létrehoz és megnyitja a kimenetet fogadó fájlt. Ha a fájl már létezik, a program nulla bájtra csonkolja. Ha a fájl engedélyek vagy egyéb okok miatt nem érhető el, a kimenet nem lesz átváltva, és a rendszer az utolsó megadott vagy alapértelmezett célhelyre küldi.
STDERR
A hibakimenetet a
stderr
streamre váltja. Ha ezt átirányították, a cél, amelyre a stream átirányítva lett, megkapja a hibakimenetet.STDOUT
A hibakimenetet a
stdout
streamre váltja. Ha ezt átirányították, a cél, amelyre a stream átirányítva lett, megkapja a hibakimenetet.
:Out <fájlnév> | STDERR | STDOUT
Létrehozza és átirányítja az összes lekérdezési eredményt a fájlnéváltal megadott fájlra, stderr
vagy stdout
. Alapértelmezés szerint a kimenet a stdout
-ra küldődik. Ha a fájl már létezik, a program nulla bájtra csonkolja. A :Out
parancs többször is megjelenhet egy szkriptben.
:Perftrace <fájlnév> | STDERR | STDOUT
Létrehozza és átirányítja az összes teljesítménykövetési információt a fájlnéváltal megadott fájlra, stderr
vagy stdout
. Alapértelmezés szerint a teljesítmény-követési kimenet a stdout
-hez van küldve. Ha a fájl már létezik, a program nulla bájtra csonkolja. A :Perftrace
parancs többször is megjelenhet egy szkriptben.
Végrehajtási vezérlőparancsok
:Hiba esetén [ kilépés | figyelmen kívül hagyás ]
Beállítja azt a műveletet, amelyet akkor kell végrehajtani, ha hiba történik a szkript vagy a köteg végrehajtása során.
A exit
beállítás használatakor sqlcmd a megfelelő hibaértékkel lép ki.
A ignore
beállítás használatakor sqlcmd figyelmen kívül hagyja a hibát, és folytatja a köteg vagy szkript végrehajtását. Alapértelmezés szerint egy hibaüzenet jelenik meg.
[:]KILÉPÉS
Az sqlcmd kilépését okozza.
[:]EXIT [ ( utasítás ) ]
Lehetővé teszi egy SELECT
utasítás eredményének használatát sqlcmdvisszatérési értékeként. Ha numerikus, az utolsó eredménysor első oszlopa 4 bájtos egész számmá (hosszú) lesz konvertálva. Az MS-DOS, a Linux és a macOS az alacsony bájtot adja át a szülőfolyamat vagy az operációs rendszer hibaszintjének. A Windows 2000 és újabb verziók a teljes 4 bájtos egész számot továbbítja. A szintaxis: :EXIT(query)
Például:
:EXIT(SELECT @@ROWCOUNT)
A :EXIT
paramétert kötegfájl részeként is felveheti. Írja be például a parancssorba a következőt:
sqlcmd -Q ":EXIT(SELECT COUNT(*) FROM '%1')"
Az sqlcmd segédprogram mindent a zárójelek (()
) között küld a kiszolgálónak. Ha egy rendszer által tárolt eljárás kiválaszt egy halmazt, és értéket ad vissza, csak a kijelölés lesz visszaadva. A zárójelek között semmit nem tartalmazó :EXIT()
utasítás mindent végrehajt a kötegben, majd visszatérési érték nélkül lép ki.
Helytelen lekérdezés megadásakor sqlcmd visszatérési érték nélkül lép ki.
Íme a EXIT
formátumok listája:
:EXIT
Nem hajtja végre a köteget, majd azonnal kilép, és nem ad vissza semmilyen értéket.
:EXIT( )
Végrehajtja a köteget, majd kilép, és nem ad vissza értéket.
:EXIT(query)
Végrehajtja a lekérdezést tartalmazó köteget, majd kilép a lekérdezés eredményeinek visszaadása után.
Ha RAISERROR
egy sqlcmd szkriptben van használatban, és 127-es állapotot emel ki, sqlcmd kilép, és visszaadja az üzenetazonosítót az ügyfélnek. Például:
RAISERROR(50001, 10, 127)
Ez a hiba az sqlcmd szkript végét okozza, és visszaadja az 50001-es üzenetazonosítót az ügyfélnek.
A -99
-1
visszatérési értékeit az SQL Server lefoglalja, sqlcmd pedig a következő további visszatérési értékeket határozza meg:
Visszaadott érték | Leírás |
---|---|
-100 | Hiba történt a visszatérési érték kiválasztása előtt. |
-101 | A visszatérési érték kiválasztásakor nem található sor. |
-102 | Konvertálási hiba történt a visszatérési érték kiválasztásakor. |
GO [darabszám]
GO
a köteg végét és a gyorsítótárazott Transact-SQL utasítások végrehajtását is jelzi. A csomag végrehajtása többször, külön csomagokként történik. Egyetlen kötegben nem deklarálhat egy változót többször.
Egyéb parancsok
:r <fájlnév>
További Transact-SQL utasításokat és sqlcmd parancsokat elemez a fájlnév által megadott fájlból az utasítás-gyorsítótárba. fájlnév a sqlcmd futtatását futtató indítókönyvtárhoz képest olvasható.
Ha a fájl olyan Transact-SQL utasításokat tartalmaz, amelyeket nem követ GO
, akkor a :r
követő sorba kell beírnia a GO
.
A fájl olvasása és végrehajtása egy batch terminátor találkozása után történik. Több :r
parancsot is kiadhat. A fájl tartalmazhat bármilyen sqlcmd parancsot, beleértve a batch terminator GO
.
Jegyzet
Az interaktív módban megjelenített sorok száma minden :r
-parancshoz egy-egy számra nő. A :r
parancs megjelenik a listaparancs kimenetében.
:Szerverlista
Felsorolja a helyileg konfigurált kiszolgálókat és a hálózaton sugárzott kiszolgálók nevét.
Csatlakozás server_name[\instance_name] [-l időtúllépés] [-U user_name [-P jelszó]]
Az SQL Server egy példányához csatlakozik. Az aktuális kapcsolatot is bezárja.
Időtúllépési lehetőségek:
Érték | Magatartás |
---|---|
0 |
Várjon örökre |
n>0 |
Várjon n másodpercig |
A SQLCMDSERVER
szkriptelési változó az aktuális aktív kapcsolatot tükrözi.
Ha nincs megadva időtúllépési, a SQLCMDLOGINTIMEOUT
változó értéke az alapértelmezett érték.
Ha csak user_name van megadva (lehetőségként vagy környezeti változóként), a rendszer kéri a felhasználót, hogy adjon meg jelszót. A rendszer nem kéri a felhasználóktól, hogy a SQLCMDUSER
vagy SQLCMDPASSWORD
környezeti változók be lettek-e állítva. Ha nem ad meg beállításokat vagy környezeti változókat, a rendszer Windows-hitelesítési módot használ a bejelentkezéshez. Ha például az SQL Server instance1
, myserver
egy példányához szeretne csatlakozni integrált biztonság használatával, a következő parancsot kell használnia:
:connect myserver\instance1
Ha szkriptelési változók használatával szeretne csatlakozni az alapértelmezett myserver
-példányhoz, használja a következő beállításokat:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
[:]!! parancs
Operációsrendszer-parancsokat hajt végre. Operációsrendszer-parancs végrehajtásához indítson el egy vonalat két felkiáltójellel (!!
), majd az operációs rendszer parancsával. Például:
:!! dir
Jegyzet
A parancs azon a számítógépen lesz végrehajtva, amelyen sqlcmd fut.
:XML [ BE | KI ]
További információért lásd ebben a cikkben az XML kimeneti formátumot és a JSON kimeneti formátumot.
:Segítség
Felsorolja sqlcmd parancsokat, valamint az egyes parancsok rövid leírását.
sqlcmd-fájlnevek
sqlcmd bemeneti fájlokat a -i
beállítással vagy a :r
paranccsal lehet megadni. A kimeneti fájlok a -o
beállítással vagy a :Error
, :Out
és :Perftrace
parancsokkal adhatók meg. Az alábbiakban néhány útmutatást talál a fájlok kezeléséhez:
:Error
:Out
és:Perftrace
külön fájlnév értékeket kell használnia. Ha ugyanazt a fájlnevet használja,, a parancsok bemenetei össze lesznek keverődve.Ha egy távoli kiszolgálón található bemeneti fájlt egy helyi számítógépen sqlcmd hív meg, és a fájl tartalmaz egy meghajtófájl elérési útját(például
:Out c:\OutputFile.txt
), a kimeneti fájl a helyi számítógépen jön létre, nem pedig a távoli kiszolgálón.Az érvényes fájlelérési utak a következők:
C:\<filename>
,\\<Server>\<Share$>\<filename>
és"C:\Some Folder\<file name>"
. Ha van szóköz az elérési úton, használjon idézőjeleket.Minden új sqlcmd munkamenet felülírja az azonos nevű meglévő fájlokat.
Tájékoztató üzenetek
sqlcmd kinyomtatja a kiszolgáló által küldött tájékoztató üzeneteket. Az alábbi példában a Transact-SQL utasítások végrehajtása után egy tájékoztató üzenet lesz kinyomtatva.
Indítsa el sqlcmd. Az sqlcmd parancssorba írja be a lekérdezést:
USE AdventureWorks2022;
GO
Az ENTERlenyomásakor a következő tájékoztató üzenet lesz kinyomtatva:
Changed database context to 'AdventureWorks2022'.
A Transact-SQL lekérdezések kimeneti formátuma
sqlcmd először kinyomtat egy oszlopfejlécet, amely tartalmazza a kiválasztási listában megadott oszlopneveket. Az oszlopnevek a SQLCMDCOLSEP
karakterrel vannak elválasztva. Alapértelmezés szerint ez egy szóköz. Ha az oszlop neve rövidebb az oszlopszélességnél, a kimenetet szóközökkel kell kipárnázni a következő oszlopig.
Ezt a sort egy elválasztó vonal követi, amely kötőjelkarakterek sorozata. Az alábbi kimenet egy példát mutat be.
Indítsa el sqlcmd. Az sqlcmd parancssorba írja be a lekérdezést:
USE AdventureWorks2022;
SELECT TOP (2) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Az ENTERlenyomásakor a következő eredményhalmaz lesz visszaadva.
BusinessEntityID FirstName LastName
---------------- ------------ ----------
285 Syed Abbas
293 Catherine Abel
(2 row(s) affected)
Bár a BusinessEntityID
oszlop csak négy karakter széles, meg lett hosszabbítva, hogy befogadja a hosszabb oszlopnevet. Alapértelmezés szerint a kimenet 80 karakter hosszúságú lesz. Ez a szélesség a -w
beállítással vagy a SQLCMDCOLWIDTH
szkriptelési változó beállításával módosítható.
XML-kimeneti formátum
A FOR XML
záradék eredményeként kapott XML-kimenet formázatlanul kerül kiadásra folyamatos adatfolyamban.
Ha XML-kimenetre számít, használja a következő parancsot: :XML ON
.
Jegyzet
sqlcmd a szokásos formátumban ad vissza hibaüzeneteket. A hibaüzenetek xml formátumú XML-szövegstreamben is jelennek meg. A :XML ON
használatával sqlcmd nem jelenít meg tájékoztató üzeneteket.
Az XML mód kikapcsolásához használja a következő parancsot: :XML OFF
.
A GO
parancs nem jelenhet meg a :XML OFF
parancs kiadása előtt, mert a :XML OFF
parancs a sqlcmd-et sororientált kimenetre váltja.
Az XML- (streamelt) adatok és a sorhalmazok adatai nem keverhetők össze. Ha a :XML ON
parancs nincs kiadva azelőtt, hogy a Transact-SQL utasítás, amely XML-adatfolyamokat bocsát ki, végrehajtásra kerül, akkor a kimenet zavaros lesz. A :XML ON
parancs kiadása után nem hajthat végre Transact-SQL normál sorkészleteket kibocsátó utasításokat.
Jegyzet
A :XML
parancs nem támogatja a SET STATISTICS XML
utasítást.
JSON kimeneti formátum
Ha JSON-kimenetre számít, használja a következő parancsot: :XML ON
. Ellenkező esetben a kimenet tartalmazza az oszlop nevét és a JSON-szöveget is. Ez a kimenet nem érvényes JSON.
Az XML mód kikapcsolásához használja a következő parancsot: :XML OFF
.
További információért lásd ebben a cikkben a XML-kimeneti formátumot alatt.
Microsoft Entra-hitelesítés használata
Példák a Microsoft Entra-hitelesítés használatára:
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd – ajánlott eljárások
Az alábbi eljárásokkal maximalizálhatja a biztonságot és a hatékonyságot.
Integrált biztonság használata.
Használjon
-X[1]
automatizált környezetekben.A bemeneti és kimeneti fájlok biztonságossá tételéhez használja a megfelelő fájlrendszer-engedélyeket.
A teljesítmény növelése érdekében egy sqlcmd munkamenetben végezze el a lehető legtöbb műveletet a munkamenetek sorozata helyett.
Állítsa be a köteg vagy lekérdezés végrehajtásának időtúllépési értékeit a vártnál magasabbra.
A helyesség maximalizálása érdekében használja az alábbi eljárásokat:
A
-V 16
használatával naplózhatja a súlyosságú 16 szintű üzeneteket. A 16-os súlyosságú üzenetek olyan általános hibákat jeleznek, amelyeket a felhasználó kijavíthat.Ellenőrizze a kilépési kódot, és
DOS ERRORLEVEL
változót a folyamat befejezése után. sqlcmd általában0
ad vissza, ellenkező esetben a-V
által konfiguráltERRORLEVEL
állítja be. Más szóval aERRORLEVEL
várhatóan nem lesz ugyanaz az érték, mint az SQL Serverről jelentett hibaszám. A hibaszám egy SQL Server-specifikus érték, amely a @@ERRORrendszerfüggvénynek felel meg.ERRORLEVEL
egy sqlcmd-specifikus érték, amely jelzi, hogy miért sqlcmd leállt, és értékét-b
parancssori argumentum megadásával befolyásolja.
A -V 16
-nak a kilépési kód és a DOS ERRORLEVEL
ellenőrzésével együtt történő használata segíthet az automatizált környezetekben a hibák észlelésében, különösen az éles kiadás előtti minőségi kapuknál.
Kapcsolódó tartalom
- További információ az új go-sqlcmd segédprogramról a GitHubon
- Gyors kezdés: SQL Server Linux-konténerképek futtatása a Dockerrel
- sqlcmd – A segédprogram indítása
- sqlcmd – Transact-SQL szkriptfájlok futtatása
- sqlcmd – használja a segédprogramot
- sqlcmd – Használja szkriptelési változókkal együtt
- sqlcmd – Csatlakozás az adatbázismotorhoz
- SQLCMD-szkriptek szerkesztése a Lekérdezésszerkesztővel
- Feladat lépéseinek kezelése
- CmdExec-feladatlépés létrehozása