Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database in Microsoft Fabric
Gebruik het hulpprogramma sqlcmd om Transact-SQL instructies, systeemprocedures en scriptbestanden in te voeren via verschillende modi:
- Bij de opdrachtprompt.
- In Query Editor in SQLCMD-modus.
- In een Windows-scriptbestand.
- In een besturingssysteem (
cmd.exe) taakstap van een SQL Server Agent-taak.
Note
Hoewel Microsoft Entra ID de nieuwe naam is voor Azure Active Directory (Azure AD), om te voorkomen dat bestaande omgevingen worden onderbroken, blijft Azure AD in sommige hardcoded elementen, zoals ui-velden, verbindingsproviders, foutcodes en cmdlets. In dit artikel zijn de twee namen uitwisselbaar.
sqlcmd-varianten
Er bestaan twee varianten van sqlcmd :
sqlcmd (Go): de
go-mssqldbop -gebaseerde sqlcmd, soms gestijld als go-sqlcmd. Deze versie is een zelfstandig hulpprogramma dat u onafhankelijk van SQL Server kunt downloaden. Het wordt uitgevoerd op Windows, macOS, Linux en in containers.sqlcmd (ODBC): het platform uitgelijnde, op ODBC gebaseerde sqlcmd, beschikbaar met SQL Server of de Microsoft-opdrachtregelprogramma's en een deel van het
mssql-toolspakket op Linux. Het wordt ook uitgevoerd op Windows, macOS, Linux en in containers.
Zie Geïnstalleerde versie van het sqlcmd-hulpprogramma controleren om erachter te komen welke variant en versie van sqlcmd op uw systeem is geïnstalleerd.
Zie Het hulpprogramma sqlcmd downloaden en installeren voor meer informatie over het ophalen van sqlcmd.
Ondersteuning voor TDS 8.0
SQL Server 2025 (17.x) introduceert TDS 8.0-ondersteuning voor het sqlcmd-hulpprogramma .
Syntax
In dit artikel zijn de termenoptie, parameter, opdrachtregelargument en schakeloptie uitwisselbaar.
sqlcmd (Go) heeft twee helpmodi: --help voor moderne subopdrachten en -? voor ODBC-compatibele vlaggen.
Moderne opdrachten (--help)
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.
ODBC-compatibele vlaggen (-?)
sqlcmd
-a packet_size
-A (dedicated administrator connection)
-b (terminate batch job if there is an error)
-c batch_terminator
-C (trust the server certificate)
-d db_name
-e (echo input)
-E (use trusted connection)
-F hostname_in_certificate
-g (enable column encryption)
-G (use Azure Active Directory for authentication)
-h rows_per_header
-H workstation_name
-i input_file
-I (enable quoted identifiers, always on)
-k[1 | 2] (remove or replace control characters)
-K application_intent
-l login_timeout
-L[c] (list servers, optional clean output)
-m error_level
-M multisubnet_failover (always enabled)
-N[s|m|o] (encrypt connection)
-o output_file
-P password
-q "cmdline query"
-Q "cmdline query" (and exit)
-r[0 | 1] (msgs to stderr)
-R (ignored, client regional settings not used)
-s col_separator
-S [protocol:]server[instance_name][,port]
-t query_timeout
-u (unicode output file)
-U login_id
-v var = "value"
-V error_severity_level
-w screen_width
-W (remove trailing spaces)
-x (disable variable substitution)
-X[1] (disable commands, startup script, environment variables, optional exit)
-y variable_length_type_display_width
-Y fixed_length_type_display_width
-z new_password
-Z new_password (and exit)
--authentication-method (Azure SQL authentication method)
--driver-logging-level (mssql driver log level)
--vertical (print results in vertical format)
-? (usage)
Ingrijpende wijzigingen van sqlcmd (ODBC)
Verschillende switches en gedragingen verschillen in het hulpprogramma sqlcmd (Go). Voor de meest actuele lijst met ontbrekende vlaggen voor compatibiliteit met eerdere versies, raadpleegt u de GitHub-discussie over de prioritering van back-compat flags.
sqlcmd (Go) ondersteunt de
-Pswitch. Voor SQL Server-verificatie kunt u wachtwoorden opgeven via deze mechanismen:- De
-Popdrachtregeloptie - De omgevingsvariabele
SQLCMDPASSWORD - De opdracht
:CONNECT - Wanneer u hierom wordt gevraagd, typt u het wachtwoord om een verbinding te voltooien
- De
Voor de
-rschakeloptie is een0of1argument vereist.De
-Rschakelaar wordt genegeerd. De Go-runtime biedt geen toegang tot landinstellingen van gebruikers.De
-Ischakeloptie wordt genegeerd. Geciteerde namen zijn altijd ingeschakeld. VoegSET QUOTED IDENTIFIER OFFtoe aan uw scripts om het gedrag van geciteerde identifiers uit te schakelen.De
-Mswitch wordt genegeerd. sqlcmd (Go) maakt failover van meerdere subnetten altijd mogelijk.Met het
-Nwordt een tekenreekswaarde gebruikt om de versleutelingskeuze aan te geven, wat een vans[trict],t[rue]/m[andatory]/yes/1,o[ptional], /,no, /,0, /,f[alse], ofdisableis.- Als u geen
-Nen-Copgeeft, onderhandelt sqlcmd met de server zonder het servercertificaat te valideren. - Als u dit opgeeft
-Nmaar niet-C, is voor sqlcmd validatie van het servercertificaat vereist. Eenfalsewaarde voor versleuteling kan nog steeds leiden tot de versleuteling van het aanmeldingspakket. - Als u zowel
-Nals-Copgeeft, gebruikt sqlcmd hun waarden voor versleutelingsonderhandeling. - Zie MS-TDS PRELOGIN voor meer informatie over client-/serverversleutelingsonderhandeling.
Important
In SQL Server 2025 (17.x)
-Nkan (vooro),optional(voorm, de standaardinstelling) ofmandatory(voors) zijnstrict. Als je-Nniet opneemt, is-Nmde standaard (voormandatory). Dit gedrag is een belangrijke wijziging van SQL Server 2022 (16.x) en eerdere versies.- Als u geen
Met de
-uswitch wordt het gegenereerde Unicode-uitvoerbestand voorafgegaan door de UTF-16 little-endian byte-order mark (BOM).Sommige gedragingen die zijn behouden om de compatibiliteit
OSQLte behouden, zijn mogelijk gewijzigd, zoals het uitlijnen van kolomkoppen voor sommige gegevenstypen.Alle opdrachten moeten op één regel passen, inclusief
EXIT. In de interactieve modus wordt niet gecontroleerd op haakjes of aanhalingstekens voor opdrachten en wordt niet om opeenvolgende regels gevraagd. Dit gedrag verschilt van de ODBC-versie, waarbij de query die doorEXIT(query)wordt uitgevoerd, over meerdere regels kan lopen.
sqlcmd (Go) ondersteunt gedeeld geheugen, named pipes en TCP-transport. Gebruik het juiste protocolvoorvoegsel op de servernaam om een protocol af te dwingen:
-
lpcvoor gedeeld geheugen (alleen localhost) -
npvoor benoemde pijpen of gebruik het UNC benoemde pipepad als servernaam -
tcpvoor TCP
Als u geen protocol opgeeft, probeert sqlcmd in deze volgorde te bellen: lpc>np>tcp. Wanneer u verbinding maakt met een externe host, lpc wordt dit overgeslagen.
Enhancements
:Connectheeft een optionele-Gparameter om een van de verificatiemethoden voor Azure SQL Database -SqlAuthentication,ActiveDirectoryDefault,ActiveDirectoryIntegrated,ActiveDirectoryServicePrincipal,ActiveDirectoryManagedIdentity,ActiveDirectoryPasswordte selecteren. Zie Verifiëren met Microsoft Entra ID in sqlcmd voor meer informatie. Als-Gniet is opgegeven, wordt geïntegreerde beveiliging of SQL Server-verificatie gebruikt, afhankelijk van de aanwezigheid van een-Ugebruikersnaamparameter.Met de
--driver-logging-levelopdrachtregelparameter kunt u traceringen van hetgo-mssqldbstuurprogramma zien. Gebruik64om alle traceringen te bekijken.sqlcmd (Go) kan resultaten afdrukken met behulp van een verticale indeling. Gebruik de parameter voor de
--verticalopdrachtregel om het in te stellen. DeSQLCMDFORMATscriptvariabele bepaalt deze ook.
Opdrachtregelopties
De volgende tabel bevat de opdrachtregelopties die beschikbaar zijn in sqlcmd en welke besturingssystemen ze ondersteunen.
Aanmeldingsopties
-A
Van toepassing op: alleen Windows. Linux en macOS worden niet ondersteund.
Meldt u aan bij SQL Server met een toegewezen beheerdersverbinding (DAC). Gebruik dit type verbinding om problemen met een server op te lossen. Deze verbinding werkt alleen met servercomputers die DAC ondersteunen. Als DAC niet beschikbaar is, genereert sqlcmd- een foutbericht en wordt vervolgens afgesloten. Zie Diagnostische verbinding voor databasebeheerders voor meer informatie over DAC. De optie -A wordt niet ondersteund met de optie -G. Wanneer u verbinding maakt met Azure SQL Database met behulp van -A, moet u een beheerder zijn op de logische SQL-server. DAC is niet beschikbaar voor een Microsoft Entra-beheerder.
Note
Zie Programmeerrichtlijnen voor meer informatie over het maken van een toegewezen beheerdersverbinding (DAC) in macOS of Linux.
-C
Gebruik deze optie om de client te configureren om impliciet het servercertificaat te vertrouwen zonder validatie. Deze optie is gelijk aan de ADO.NET optie TRUSTSERVERCERTIFICATE = true.
Voor het hulpprogramma sqlcmd (Go) zijn ook de volgende voorwaarden van toepassing:
- Als u
-Nen-Cniet opgeeft, onderhandelt sqlcmd met de server zonder het servercertificaat te valideren. - Als u dit opgeeft
-Nmaar niet-C, is voor sqlcmd validatie van het servercertificaat vereist. Eenfalsewaarde voor versleuteling kan nog steeds leiden tot de versleuteling van het aanmeldingspakket. - Als u zowel
-Nals-Copgeeft, gebruikt sqlcmd hun waarden voor de versleutelingsonderhandeling.
-d db_name
Geeft een USE <db_name>-instructie uit wanneer u sqlcmd-start. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDDBNAME. Met deze parameter geeft u de initiële database op. De standaardwaarde is de standaarddatabaseeigenschap van uw aanmelding. Als de database niet bestaat, wordt er een foutbericht gegenereerd en sqlcmd afgesloten.
-D
Interpreteert de servernaam die is opgegeven voor -S als een DSN in plaats van een hostnaam. Zie DSN-ondersteuning in sqlcmd en bcp voor meer informatie.
Note
De optie -D is alleen beschikbaar op Linux- en macOS-clients. Op Windows-clients verwijst het naar een verouderde optie die wordt verwijderd en wordt genegeerd.
-l login_timeout
Hiermee specifieert u het aantal seconden voordat het aanmelden met sqlcmd bij het ODBC-stuurprogramma een time-out optreedt wanneer u probeert verbinding te maken met een server. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDLOGINTIMEOUT. De standaardtime-out voor aanmelding bij sqlcmd- is 8 seconden. Wanneer u de -G optie gebruikt om verbinding te maken met Azure SQL Database of Azure Synapse Analytics en te verifiëren met Microsoft Entra ID, wordt een time-outwaarde van ten minste 30 seconden aanbevolen. De tijdslimiet voor inloggen moet een getal tussen 0 en 65534 zijn. Als de waarde niet numeriek is of niet in dat bereik valt, genereert sqlcmd een foutbericht. Een waarde van 0 geeft een time-out op die oneindig moet zijn.
-E
Gebruikt een vertrouwde verbinding in plaats van een gebruikersnaam en wachtwoord te gebruiken om u aan te melden bij SQL Server. Standaard: zonder dat -E is opgegeven, maakt sqlcmd gebruik van de optie voor een vertrouwde verbinding.
De optie -E negeert mogelijke omgevingsinstellingen voor gebruikersnaam en wachtwoordomgeving, zoals SQLCMDPASSWORD. Als de optie -E samen met de optie -U of de optie -P wordt gebruikt, wordt er een foutbericht gegenereerd.
Note
Zie Geïntegreerde verificatie gebruiken voor meer informatie over het maken van vertrouwde verbindingen die gebruikmaken van geïntegreerde verificatie vanuit een Linux- of macOS-client.
-F hostnaam_in_certificaat
Hiermee geeft u een andere, verwachte algemene naam (CN) of alternatieve onderwerpnaam (SAN) op in het servercertificaat dat moet worden gebruikt tijdens de validatie van het servercertificaat. Zonder deze optie zorgt certificaatvalidatie ervoor dat de CN of SAN in het certificaat overeenkomt met de servernaam waarmee u verbinding maakt. U kunt deze parameter gebruiken wanneer de servernaam niet overeenkomt met de CN of SAN, bijvoorbeeld wanneer u DNS-aliassen gebruikt.
Voorbeeld:
sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -F server01.adventure-works.com
Note
sqlcmd (Go) gebruikt -F ook om de hostnaam in het servercertificaat op te geven. Als u resultaten in verticale indeling wilt afdrukken, gebruikt sqlcmd (Go) in plaats daarvan de --vertical switch.
-g
Hiermee stelt u de instelling Kolomversleuteling in op Enabled. Zie Always Encryptedvoor meer informatie. Alleen hoofdsleutels die zijn opgeslagen in het Windows-certificaatarchief, worden ondersteund. De optie -g vereist ten minste sqlcmd versie 13.1. Voer sqlcmd -? uit om de versie te bepalen.
-G
Gebruik deze optie om te verifiëren met Microsoft Entra wanneer u verbinding maakt met Azure SQL Database of Azure Synapse Analytics. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDUSEAAD = true. De optie -G vereist ten minste sqlcmd versie 13.1. Voer sqlcmd -? uit om uw versie te bepalen. Zie Microsoft Entra-verificatie voor Azure SQL voor meer informatie. De optie -A wordt niet ondersteund met de optie -G.
De optie -G is alleen van toepassing op Azure SQL Database en Azure Synapse Analytics.
Interactieve Microsoft Entra-verificatie wordt momenteel niet ondersteund in Linux of macOS. Voor geïntegreerde Microsoft Entra-verificatie is odbc-stuurprogramma downloaden vereist voor SQL Server versie 17.6.1 of hoger en een correct geconfigureerde Kerberos-omgeving.
Zie Verifiëren met Microsoft Entra-id in sqlcmd voor meer informatie over Microsoft Entra-verificatie.
- H-workstation_name
De naam van een werkstation. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDWORKSTATION. De naam van het werkstation wordt weergegeven in de hostname kolom van de sys.sysprocesses catalogusweergave en kan worden geretourneerd met behulp van de sp_who opgeslagen procedure. Als u deze optie niet opgeeft, is de standaardwaarde de naam van de huidige computer. Gebruik deze naam om verschillende sqlcmd-sessies te identificeren.
-j
Drukt onbewerkte foutberichten op het scherm weer.
-J server_certificate
Alleen van toepassing op: sqlcmd (ODBC), Linux en macOS. Windows wordt niet ondersteund.
Hiermee geeft u het pad naar een servercertificaatbestand. Dit bestand wordt vergeleken met het versleutelingscertificaat van de server. De vergelijking wordt uitgevoerd in plaats van standaardcertificaatvalidatie (vervaldatum, hostnaam, vertrouwensketen, enzovoort). De geaccepteerde certificaatindelingen zijn PEM, DER en CER.
Gebruik deze optie wanneer u verbinding maakt met servers die gebruikmaken van zelfondertekende certificaten of certificaten die zijn uitgegeven door een persoonlijke certificeringsinstantie. Als versleuteling is ingeschakeld en certificaatvalidatie mislukt, mislukt de verbinding.
Voorbeeld:
sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -J /etc/ssl/certs/server_certificate.cer
-K application_intent (applicatiebedoeling)
Declareert het workloadtype van de toepassing bij het maken van verbinding met een server. De enige ondersteunde waarde is ReadOnly. Als u dit niet opgeeft -K, biedt sqlcmd geen ondersteuning voor connectiviteit met een secundaire replica in een beschikbaarheidsgroep. Voor meer informatie, zie alleen-lezen werklast overdragen naar secundaire replica van een Always On-beschikbaarheidsgroep.
Note
-K wordt niet ondersteund in SUSE Linux Enterprise Server (SLES). U kunt echter het ApplicationIntent=ReadOnly trefwoord opgeven in een DSN-bestand dat wordt doorgegeven aan sqlcmd. Zie DSN-ondersteuning in sqlcmd en bcp verderop in dit artikel voor meer informatie.
Zie Hoge beschikbaarheid en herstel na noodgevallen in Linux en macOS voor meer informatie.
-M multisubnet_failover
Geef altijd -M op wanneer u verbinding maakt met de listener van een SQL Server-beschikbaarheidsgroep of een exemplaar van een SQL Server-failovercluster.
-M biedt een snellere detectie van en verbinding met de (momenteel) actieve server. Als u -M niet opgeeft, wordt -M uitgeschakeld.
Voor meer informatie, zie:
- Verbinding maken met een AlwaysOn-beschikbaarheidsgroeplistener
- Referentie voor het maken en configureren van AlwaysOn-beschikbaarheidsgroepen
- Failoverclustering en AlwaysOn-beschikbaarheidsgroepen (SQL Server)
- Lees-intensieve workload verplaatsen naar een secundaire replica van een Always On-beschikbaarheidsgroep
Note
-M wordt niet ondersteund in SUSE Linux Enterprise Server (SLES). U kunt echter het MultiSubnetFailover=Yes trefwoord opgeven in een DSN-bestand dat wordt doorgegeven aan sqlcmd. Zie DSN-ondersteuning in sqlcmd en bcp verderop in dit artikel voor meer informatie.
Zie Hoge beschikbaarheid en herstel na noodgevallen in Linux en macOS voor meer informatie.
-N[s|m|o]
De client gebruikt deze optie om een versleutelde verbinding aan te vragen.
De -N schakeloptie kan o (voor optional), m (voor mandatory, de standaardinstelling) of s (voor strict) zijn. Indien u -N niet opneemt, is de standaardwaarde -Nm (voor mandatory). Deze standaardinstelling is een belangrijke wijziging van SQL Server 2022 (16.x) en eerdere versies, waarbij de standaardwaarde is -No.
Voor het hulpprogramma sqlcmd (Go) gebruikt u een tekenreekswaarde die een van -N, true, of false kan zijn om de versleutelingskeuze op te geven. (default is hetzelfde als het weglaten van de parameter):
Als u geen
-Nen-Copgeeft, zal sqlcmd de authenticatie met de server onderhandelen zonder het servercertificaat te valideren.Als u dit opgeeft
-Nmaar niet-C, is voor sqlcmd validatie van het servercertificaat vereist. Eenfalsewaarde voor versleuteling kan nog steeds leiden tot de versleuteling van het aanmeldingspakket.Als u zowel
-Nals-Copgeeft, gebruikt sqlcmd hun waarden voor de versleutelingsonderhandeling.
-P wachtwoord
Een door de gebruiker opgegeven wachtwoord. Wachtwoorden zijn hoofdlettergevoelig. Als u de -U optie gebruikt, maar niet de -P optie gebruikt of de SQLCMDPASSWORD omgevingsvariabele instelt, vraagt sqlcmd de gebruiker om een wachtwoord. Gebruik geen null-wachtwoord (leeg), maar u kunt het null-wachtwoord opgeven met behulp van een paar aaneengesloten dubbele aanhalingstekens voor de parameterwaarde ("").
Important
Het gebruik -P is onveilig. Vermijd het geven van het wachtwoord via de opdrachtregel. U kunt ook de omgevingsvariabele SQLCMDPASSWORD gebruiken of het wachtwoord interactief invoeren door de optie -P weg te laten.
Gebruik een sterk wachtwoord.
De wachtwoordprompt wordt weergegeven door deze als volgt naar de console af te drukken: Password:
Gebruikersinvoer is verborgen. Dit betekent dat er niets wordt weergegeven en dat de cursor op positie blijft.
Met de omgevingsvariabele SQLCMDPASSWORD kunt u een standaardwachtwoord instellen voor de huidige sessie. Wachtwoorden hoeven daarom niet in batchbestanden in code te worden vastgelegd. In het volgende voorbeeld wordt eerst de variabele SQLCMDPASSWORD ingesteld bij de opdrachtprompt en wordt vervolgens het hulpprogramma sqlcmd geopend.
Typ bij de opdrachtprompt de volgende opdracht. Vervang <password> door een geldig wachtwoord.
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
Als de combinatie van gebruikersnaam en wachtwoord onjuist is, wordt er een foutbericht gegenereerd.
Note
De OSQLPASSWORD omgevingsvariabele wordt bewaard voor compatibiliteit met eerdere versies. De omgevingsvariabele SQLCMDPASSWORD heeft voorrang op de omgevingsvariabele OSQLPASSWORD. Dit betekent dat sqlcmd en osql- naast elkaar kunnen worden gebruikt zonder interferentie. Oude scripts blijven werken.
Als u de -P optie met de -E optie gebruikt, wordt er een foutbericht gegenereerd.
Als u de -P optie met meer dan één argument gebruikt, wordt er een foutbericht gegenereerd en wordt het programma afgesloten.
Een wachtwoord met speciale tekens kan een foutbericht genereren. U moet speciale tekens escaperen wanneer u -P gebruikt, of de omgevingsvariabele SQLCMDPASSWORD gebruiken in plaats daarvan.
In Linux en macOS, wanneer deze wordt gebruikt met de -G optie zonder -U, -P geeft u een bestand op dat een toegangstoken bevat (v17.8+). Het tokenbestand moet in het UTF-16LE-formaat (geen BOM) zijn.
Toegangstokens kunnen worden verkregen via verschillende methoden. U moet ervoor zorgen dat het toegangstoken correct is byte-for-byte, omdat het as-iswordt verzonden. Met de volgende voorbeeldopdracht wordt een toegangstoken opgehaald. De opdracht maakt gebruik van de Azure CLI- en Linux-opdrachten en slaat deze op in een bestand in de juiste indeling. Als de standaardcodering van uw systeem of terminal niet ASCII of UTF-8 is, moet u mogelijk de iconv opties aanpassen. Zorg ervoor dat u het resulterende bestand zorgvuldig beveiligt en verwijdert wanneer het niet meer nodig is.
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
-S [protocol:]server[\instance_name][,poort]
Hiermee specificeert u het exemplaar van SQL Server waarmee u verbinding maakt. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDSERVER.
Geef server_name op om verbinding te maken met het standaardexemplaren van SQL Server op die servercomputer. Geef server_name[\instance_name] op om verbinding te maken met een benoemd exemplaar van SQL Server op die servercomputer. Als u geen servercomputer opgeeft, maakt sqlcmd verbinding met het standaardexemplaren van SQL Server op de lokale computer. Deze optie is vereist wanneer u sqlcmd uitvoert vanaf een externe computer in het netwerk.
protocol kan tcp (TCP/IP), lpc (gedeeld geheugen) of np (named pipes) zijn.
Als u geen server_name[\instance_name] opgeeft wanneer u sqlcmdstart, controleert en gebruikt SQL Server de omgevingsvariabele SQLCMDSERVER.
Note
De OSQLSERVER omgevingsvariabele wordt bewaard voor compatibiliteit met eerdere versies. De omgevingsvariabele SQLCMDSERVER heeft voorrang op de omgevingsvariabele OSQLSERVER. Dit betekent dat sqlcmd en osql- naast elkaar kunnen worden gebruikt zonder interferentie. Oude scripts blijven werken.
Het ODBC-stuurprogramma in Linux en macOS vereist -S. De enige geldige protocolwaarde is tcp.
- U-login_id
De aanmeldingsnaam of de gebruikersnaam van de ingesloten database. Voor ingesloten databasegebruikers moet u de optie databasenaam (-d) opgeven.
Note
De OSQLUSER omgevingsvariabele wordt bewaard voor compatibiliteit met eerdere versies. De omgevingsvariabele SQLCMDUSER heeft voorrang op de omgevingsvariabele OSQLUSER. Dit betekent dat sqlcmd en osql- naast elkaar kunnen worden gebruikt zonder interferentie. Oude scripts blijven werken.
Als u de optie -U of de optie -P niet opgeeft, probeert sqlcmd- verbinding te maken met behulp van de Windows-verificatiemodus. Verificatie is gebaseerd op het Windows-account van de gebruiker die sqlcmduitvoert.
Als u de -U optie gebruikt met de -E optie (verderop in dit artikel beschreven), wordt er een foutbericht gegenereerd. Als de optie -U wordt gevolgd door meer dan één argument, wordt er een foutbericht gegenereerd en wordt het programma afgesloten.
-z new_password
Wijzig het wachtwoord. Vervang <oldpassword> door het oude wachtwoord en <newpassword> door het nieuwe wachtwoord.
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
-Z new_password
Wijzig het wachtwoord en sluit het af. Vervang <oldpassword> door het oude wachtwoord en <newpassword> door het nieuwe wachtwoord.
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
Opties voor invoer en uitvoer
-f codepagina | i:codepagina[,o:codepagina] | o:codepagina[,i:codepagina]
Hiermee geeft u de pagina's met invoer- en uitvoercode op. Het codepaginanummer is een numerieke waarde waarmee een geïnstalleerde Windows-codepagina wordt opgegeven.
Regels voor conversie van codepagina's:
Als u geen codepagina opgeeft, gebruikt sqlcmd de huidige codepagina voor zowel invoer- als uitvoerbestanden, tenzij het invoerbestand een Unicode-bestand is. In dat geval is er geen conversie vereist.
sqlcmd- herkent automatisch zowel big-endian- als little-endian Unicode-invoerbestanden. Als u de
-uoptie opgeeft, is de uitvoer altijd Little Endian Unicode.Als u geen uitvoerbestand opgeeft, is de pagina met de uitvoercode de consolecodepagina. Met deze methode kan de uitvoer correct worden weergegeven op de console.
Voor meerdere invoerbestanden wordt ervan uitgegaan dat dezelfde codepagina wordt gebruikt. Unicode- en niet-Unicode-invoerbestanden kunnen worden gemengd.
Voer chcp in bij de opdrachtprompt om de codepagina van cmd.exete controleren.
Note
In Linux is het codepaginanummer een numerieke waarde die een geïnstalleerde Linux-codepagina aangeeft (beschikbaar sinds 17.5.1.1).
-i input_file[,input_file2...]
Identificeert het bestand dat een batch Transact-SQL instructies of opgeslagen procedures bevat. U kunt meerdere bestanden opgeven die sqlcmd op volgorde leest en verwerkt. Gebruik geen spaties tussen bestandsnamen.
sqlcmd controleert eerst of alle opgegeven bestanden bestaan. Als een of meer bestanden niet bestaan, sqlcmd wordt afgesloten. De -i optie en de -Q/-q opties sluiten elkaar wederzijds uit.
Note
Als u de -i optie gevolgd door een of meer extra parameters gebruikt, moet u een spatie tussen de parameter en de waarde gebruiken. Deze vereiste is een bekend probleem in sqlcmd (Go).
Padvoorbeelden:
-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"
Bestandspaden die spaties bevatten, moeten tussen aanhalingstekens worden geplaatst.
U kunt deze optie meerdere keren gebruiken:
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
-o uitvoerbestand
Identificeert het bestand dat uitvoer ontvangt van sqlcmd-.
Als u opgeeft -u, slaat sqlcmd de output_file op in Unicode-indeling. Als de bestandsnaam niet geldig is, genereert sqlcmd een foutbericht en wordt afgesloten.
sqlcmd- biedt geen ondersteuning voor gelijktijdig schrijven van meerdere sqlcmd processen naar hetzelfde bestand. Als dit gebeurt, kunt u de bestandsuitvoer als beschadigd of onjuist beschouwen. De optie -f is ook relevant voor bestandsindelingen.
sqlcmd maakt dit bestand als het niet bestaat.
sqlcmd overschrijft een bestand met dezelfde naam uit een vorige sessie. Het bestand dat hier is opgegeven, is niet het stdout-bestand. Als u een stdout bestand opgeeft, gebruikt sqlcmd dit bestand niet.
Padvoorbeelden:
-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"
Bestandspaden die spaties bevatten, moeten tussen aanhalingstekens worden geplaatst.
-r[0 | 1]
Hiermee wordt de uitvoer van het foutbericht omgeleid naar het scherm (stderr). Als u geen parameter opgeeft of als u 0opgeeft, worden alleen foutberichten met een ernstniveau van 11 of hoger omgeleid. Als u 1opgeeft, wordt alle foutberichtuitvoer, inclusief PRINT, omgeleid. Deze optie heeft geen effect als u -ogebruikt. Standaard worden berichten verzonden naar stdout.
Note
Voor het hulpprogramma sqlcmd (Go) vereist -r een 0 of 1 argument.
-R
Alleen van toepassing op: sqlcmd (ODBC).
Veroorzaakt sqlcmd- om numerieke, valuta-, datum- en tijdkolommen te lokaliseren die zijn opgehaald uit SQL Server op basis van de landinstelling van de client. Deze kolommen worden standaard weergegeven met behulp van de landinstellingen van de server.
Note
In Linux en macOS wordt momenteel alleen -R-opmaak (Amerikaans Engels) gebruikt voor en_US.
-u
Hiermee geeft u op dat output_file is opgeslagen in Unicode-indeling, ongeacht de indeling van input_file.
Note
Voor het hulpprogramma sqlcmd (Go) wordt het gegenereerde Unicode-uitvoerbestand voorafgegaan door de UTF-16 little-endian byte-order mark (BOM).
Opties voor query-uitvoering
-e
Schrijft invoerscripts naar het standaarduitvoerapparaat (stdout).
-I
Alleen van toepassing op: sqlcmd (ODBC).
Hiermee stelt u de SET QUOTED_IDENTIFIER verbindingsoptie in op ON. De standaardinstelling is OFF. Zie SET QUOTED_IDENTIFIERvoor meer informatie.
Note
Schakel het gedrag van het aangehaalde identificator uit in het hulpprogramma sqlcmd (Go) door SET QUOTED IDENTIFIER OFF aan uw scripts toe te voegen.
-q "cmdlinequery"
Voert een query uit wanneer sqlcmd wordt gestart, maar sluit sqlcmd niet af wanneer de query is voltooid. U kunt meerdere query's uitvoeren die zijn gescheiden door een puntkomma. Gebruik aanhalingstekens rond de query, zoals wordt weergegeven in het volgende voorbeeld.
Typ bij de opdrachtprompt:
sqlcmd -d AdventureWorks2025 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2025 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2025 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2025 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2025 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2025 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Important
Gebruik de GO terminator niet in de query.
Als u samen met deze optie opgeeft -b , wordt sqlcmd afgesloten met een fout. De -b optie wordt elders in dit artikel beschreven.
-Q "cmdlinequery"
Voert een query uit wanneer sqlcmd wordt gestart en stopt dan onmiddellijk sqlcmd. U kunt meerdere query's uitvoeren die zijn gescheiden door een puntkomma.
Gebruik aanhalingstekens rond de query, zoals wordt weergegeven in het volgende voorbeeld.
Typ bij de opdrachtprompt:
sqlcmd -d AdventureWorks2025 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2025 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2025 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2025 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2025 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2025 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Important
Gebruik de GO terminator niet in de query.
Als u samen met deze optie opgeeft -b , wordt sqlcmd afgesloten met een fout. De -b optie wordt elders in dit artikel beschreven.
-t query_timeout
Hiermee geeft u het aantal seconden op voordat er een time-out optreedt voor een opdracht (of Transact-SQL instructie). Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDSTATTIMEOUT. Als u geen query_timeout waarde opgeeft, treedt er geen time-out op voor de opdracht. De query_timeout moet een getal tussen 1 en 65534. Als u een waarde opgeeft die niet numeriek is of niet in dat bereik valt, genereert sqlcmd een fout.
Note
De werkelijke time-outwaarde kan variëren van de opgegeven query_timeout waarde met enkele seconden.
-v var = waarde [ var = waarde... ]
Van toepassing op: alleen Windows. Linux en macOS worden niet ondersteund.
Hiermee maakt u een sqlcmd-scriptvariabele voor gebruik in een sqlcmd-script .
Plaats de waarde tussen aanhalingstekens als de waarde spaties bevat. U kunt meerdere <var>="<value>" waarden opgeven. Als een van de waarden die u opgeeft fouten bevat, genereert sqlcmd een foutbericht en wordt vervolgens afgesloten.
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
Zorgt ervoor dat sqlcmd- scriptvariabelen negeert. Deze parameter is handig wanneer een script veel INSERT instructies bevat die mogelijk tekenreeksen bevatten met dezelfde indeling als reguliere variabelen, zoals $(<variable_name>).
Opmaakopties
-h kopteksten
Hiermee geeft u het aantal rijen op dat moet worden afgedrukt tussen de kolomkoppen. Met de standaardinstelling worden de koppen eenmaal afgedrukt voor elke set queryresultaten. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDHEADERS. Gebruik -1 dit om op te geven dat kopteksten niet worden afgedrukt. Een ongeldige waarde zorgt ervoor dat sqlcmd een foutbericht genereert en vervolgens afsluit.
-k [1 | 2]
Verwijdert alle besturingstekens, zoals tabs en nieuwe regeltekens, uit de uitvoer. Met deze parameter blijft de kolomopmaak behouden wanneer gegevens worden geretourneerd.
-
-kverwijdert besturingstekens. -
-k1vervangt elk besturingselementteken door een spatie. -
-k2vervangt opeenvolgende besturingstekens door één spatie.
-s kolomscheidingsteken
U geeft het scheidingsteken voor kolommen op. De standaardwaarde is een lege ruimte. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDCOLSEP. Als u tekens wilt gebruiken die een speciale betekenis hebben voor het besturingssysteem, zoals het ampersand (&) of puntkomma (;), plaatst u het teken tussen aanhalingstekens ("). Het kolomscheidingsteken kan een 8-bits teken zijn.
-w screen_width
Hiermee specificeert u de schermbreedte voor uitvoer. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDCOLWIDTH. De kolombreedte moet een getal groter zijn dan 8 en kleiner dan 65536. Als de opgegeven kolombreedte niet in dat bereik valt, genereert sqlcmd een foutbericht. De standaardbreedte is 80 tekens. Wanneer een uitvoerlijn de opgegeven kolombreedte overschrijdt, wordt deze doorgeschoven naar de volgende regel.
-W
Hiermee verwijdert u volgspaties uit een kolom. Gebruik deze optie samen met de optie bij het -s voorbereiden van gegevens die u wilt exporteren naar een andere toepassing. Kan niet worden gebruikt met de -y- of -Y-opties.
-y variable_length_type_display_width
Hiermee stelt u de sqlcmd scripting-variabele SQLCMDMAXVARTYPEWIDTHin. De standaardwaarde is 256. Hiermee wordt het aantal tekens beperkt dat wordt geretourneerd voor de gegevenstypen met een grote variabele lengte:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- xml
- door de gebruiker gedefinieerde gegevenstypen (UDT's)
- text
- ntext
- image
UDT's kunnen een vaste lengte hebben, afhankelijk van de implementatie. Als deze lengte van een vaste lengte UDT korter is dan display_width, wordt de waarde van de geretourneerde UDT niet beïnvloed. Als de lengte echter groter is dan display_width, wordt de uitvoer ingekort.
Caution
Gebruik de -y 0 optie met extreme voorzichtigheid, omdat dit aanzienlijke prestatieproblemen kan veroorzaken op zowel de server als het netwerk, afhankelijk van de grootte van de geretourneerde gegevens.
- Y-fixed_length_type_display_width
Hiermee stelt u de sqlcmd scripting-variabele SQLCMDMAXFIXEDTYPEWIDTHin. De standaardwaarde is 0 (onbeperkt). Hiermee beperkt u het aantal tekens dat wordt geretourneerd voor de volgende gegevenstypen:
- char(n), waarbij 1 <= n<= 8000
- nchar(n), waarbij 1 <= n<= 4000
- varchar(n), waarbij 1 <= n<= 8000
- nvarchar(n), waarbij 1 <= n<= 4000
- varbinary(n), waarbij 1 <= n<= 4000
- sql_variant
Opties voor foutrapportage
-b
Hiermee geeft u op dat sqlcmd afsluit en een DOS ERRORLEVEL waarde retourneert wanneer er een fout optreedt. De waarde die sqlcmd aan de ERRORLEVEL variabele retourneert, is 1 wanneer het SQL Server-foutbericht een ernstniveau heeft dat groter is dan 10. Anders is 0de geretourneerde waarde . Als u de -V optie instelt, dan -b wordt er in sqlcmd geen fout gerapporteerd als het ernstniveau lager is dan de waarden die door de -V optie zijn ingesteld. Batchbestanden met opdrachtprompt kunnen de waarde van ERRORLEVEL testen en de fout op de juiste manier afhandelen.
sqlcmd- rapporteert geen fouten voor ernstniveau 10 (informatieve berichten).
Als het sqlcmd-script een onjuiste opmerking, een syntaxisfout bevat of als er een scriptvariabele ontbreekt, is de geretourneerde ERRORLEVEL1.
-m error_level
Hiermee bepaalt u welke foutberichten naar stdoutworden verzonden.
sqlcmd verzendt berichten met een ernstniveau dat groter is dan of gelijk is aan dit niveau. Wanneer u deze waarde instelt op -1, verzendt sqlcmd alle berichten, inclusief informatieve berichten. Neem geen spaties tussen de -m en -1.
-m-1 is bijvoorbeeld geldig en -m -1 niet.
Met deze optie wordt ook de sqlcmd scriptvariabele SQLCMDERRORLEVELingesteld. Deze variabele heeft een standaardwaarde van 0.
- V-error_severity_level
Hiermee bepaalt u het ernstniveau dat sqlcmd gebruikt om de ERRORLEVEL variabele in te stellen. Foutberichten met een ernstniveau dat groter is dan of gelijk aan deze ingestelde waarde ERRORLEVEL. Waarden die kleiner zijn dan 0, worden gerapporteerd als 0. U kunt batch- en CMD-bestanden gebruiken om de waarde van de ERRORLEVEL variabele te testen.
Diverse opties
-een packet_size
Vraagt een pakket van een andere grootte aan. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDPACKETSIZE.
packet_size moet een waarde tussen 512 en 32767zijn. De standaardwaarde is 4096. Een grotere pakketgrootte kan de prestaties verbeteren voor het uitvoeren van scripts met veel Transact-SQL instructies tussen GO opdrachten. U kunt een grotere pakketgrootte aanvragen. Als de aanvraag echter wordt geweigerd, gebruikt sqlcmd- de standaardserver voor pakketgrootte.
-c batch_terminator
Specificeert het batch-eindteken. Standaard moet u opdrachten beëindigen en naar SQL Server verzenden met behulp van het woord GO op een regel zelf, gevolgd door Enter. Wanneer u de batcheindtekens opnieuw instelt, gebruikt u geen Transact-SQL gereserveerde trefwoorden of tekens met speciale betekenis voor het besturingssysteem, zelfs niet als ze worden voorafgegaan door een backslash.
-L[c]
Van toepassing op: alleen Windows. Linux en macOS worden niet ondersteund.
Een lijst met de lokaal geconfigureerde servercomputers en de namen van de servercomputers die op het netwerk uitzenden. U kunt deze parameter niet gebruiken in combinatie met andere parameters. Het maximum aantal servercomputers dat kan worden vermeld, is 3000. Als de serverlijst wordt afgekapt vanwege de grootte van de buffer, wordt er een waarschuwingsbericht weergegeven.
Note
Vanwege de aard van het uitzenden op netwerken, ontvangt sqlcmd- mogelijk geen tijdige reactie van alle servers. Daarom kan de lijst met geretourneerde servers variëren voor elke aanroep van deze optie.
Als u de optionele parameter copgeeft, wordt de uitvoer weergegeven zonder de Servers: koptekstregel en wordt elke serverregel weergegeven zonder voorloopspaties. Deze presentatie wordt aangeduid als 'schone output'. Schone uitvoer verbetert de verwerkingsprestaties van scripttalen.
-p[1]
Hiermee worden prestatiestatistieken afgedrukt voor elke resultatenset. De volgende weergave is een voorbeeld van de indeling voor prestatiestatistieken:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)
Where:
-
x= Aantal transacties dat door SQL Server wordt verwerkt. -
t1= Totale tijd voor alle transacties. -
t2= Gemiddelde tijd voor één transactie. -
t3= Gemiddeld aantal transacties per seconde.
Alle tijden zijn in milliseconden.
Als u de optionele parameter 1opgeeft, heeft de uitvoerindeling van de statistieken een door dubbele punt gescheiden indeling die eenvoudig kan worden geïmporteerd in een spreadsheet of door een script kan worden verwerkt.
Als u de optionele parameter opgeeft als een andere waarde dan 1, wordt er een fout gegenereerd en wordt sqlcmd afgesloten.
-X[1]
Hiermee schakelt u opdrachten uit waarmee systeembeveiliging mogelijk wordt aangetast wanneer sqlcmd- wordt uitgevoerd vanuit een batchbestand. De uitgeschakelde opdrachten worden nog steeds herkend; sqlcmd een waarschuwingsbericht geeft en doorgaat. Als u de optionele parameter 1opgeeft, genereert sqlcmd een foutbericht en wordt vervolgens afgesloten. De volgende opdrachten worden uitgeschakeld wanneer de optie -X wordt gebruikt:
ED-
!!bevelen
Als u de -X optie opgeeft, voorkomt u dat omgevingsvariabelen worden doorgegeven aan sqlcmd. Het voorkomt ook dat het opstartscript dat is opgegeven met behulp van de SQLCMDINI scriptvariabele, wordt uitgevoerd. Zie sqlcmd - Gebruiken met scriptvariabelenvoor meer informatie over sqlcmd scriptvariabelen.
-?
Geeft de versie van sqlcmd en een syntaxisoverzicht weer van sqlcmd opties.
Note
Voer in macOS in plaats daarvan sqlcmd '-?' (met aanhalingstekens) uit.
Remarks
U hoeft geen opties te gebruiken in de volgorde die wordt weergegeven in de syntaxissectie.
Note
Als u de -i optie gevolgd door een of meer extra parameters gebruikt, moet u een spatie tussen de parameter en de waarde gebruiken. Deze vereiste is een bekend probleem in sqlcmd (Go).
sqlcmd drukt een lege regel af tussen meerdere resultatensets in een batch. Bovendien wordt het <x> rows affected bericht niet weergegeven wanneer het niet van toepassing is op de lopende instructie.
Als u sqlcmd- interactief wilt gebruiken, typt u sqlcmd bij de opdrachtprompt met een of meer van de opties die eerder in dit artikel zijn beschreven. Zie Sqlcmd gebruiken voor meer informatie.
Note
De opties-l, -Qof -Z-i zorgen ervoor dat sqlcmd na uitvoering wordt afgesloten.
Het onderliggende besturingssysteem bepaalt de totale lengte van de sqlcmd-opdrachtregel in de opdrachtomgeving (bijvoorbeeld cmd.exe of bash), inclusief alle argumenten en uitgebreide variabelen.
DSN-ondersteuning in sqlcmd en bcp
U kunt een gegevensbronnaam (DSN) opgeven in plaats van een servernaam in de sqlcmd of bcp -S optie (of sqlcmd :Connect opdracht) als u opgeeft -D. Als u de -D optie gebruikt, maken sqlcmd en bcp verbinding met de server die is opgegeven in de DSN door de -S optie.
Systeem-DSN's worden opgeslagen in het odbc.ini bestand in de ODBC-map SysConfigDir (/etc/odbc.ini op standaardinstallaties). DSN's van gebruikers worden opgeslagen in .odbc.ini de basismap van een gebruiker (~/.odbc.ini).
Op Windows-systemen worden systeem- en gebruikers-DSN's opgeslagen in het register en beheerd via odbcad32.exe.
bcp en sqlcmd bieden geen ondersteuning voor bestands-DSN's.
Zie DSN- en verbindingsreekstrefwoorden en -kenmerken voor een lijst met vermeldingen die door het stuurprogramma worden ondersteund.
In een DSN is alleen de DRIVER vermelding vereist. Als u verbinding wilt maken met een externe server, heeft sqlcmd of bcp een waarde in het SERVER element nodig. Als het SERVER element leeg is of niet aanwezig is in de DSN, probeert sqlcmd of bcp verbinding te maken met het standaardexemplaren op het lokale systeem.
Wanneer u bcp op Windows-systemen gebruikt, is voor SQL Server 2017 (14.x) en eerdere versies het stuurprogramma SQL Native Client 11 (sqlncli11.dll) vereist, terwijl SQL Server 2019 (15.x) en latere versies het Microsoft ODBC-stuurprogramma 17 voor het SQL Server-stuurprogramma (msodbcsql17.dll) vereisen.
Als u dezelfde optie opgeeft in zowel de DSN als de sqlcmd - of bcp-opdrachtregel , overschrijft de opdrachtregeloptie de waarde die in de DSN wordt gebruikt. Als de DSN bijvoorbeeld een DATABASE vermelding heeft en de sqlcmd-opdrachtregel bevat -d, wordt de doorgegeven -d waarde gebruikt. Als u opgeeft Trusted_Connection=yes in de DSN, wordt Kerberos-verificatie gebruikt; gebruikersnaam (-U) en wachtwoord (-P), indien opgegeven, worden genegeerd.
U kunt bestaande scripts wijzigen die worden aangeroepen isql om sqlcmd te gebruiken door de volgende alias te definiëren: alias isql="sqlcmd -D"
aanbevolen procedures voor sqlcmd
Gebruik de volgende procedures om de beveiliging en efficiëntie te maximaliseren:
Geïntegreerde beveiliging gebruiken.
Gebruik
-X[1]in geautomatiseerde omgevingen.Beveilig invoer- en uitvoerbestanden met behulp van de juiste bestandssysteemmachtigingen.
Als u de prestaties wilt verbeteren, moet u zoveel mogelijk doen in één sqlcmd-sessie in plaats van een reeks sessies te gebruiken.
Stel time-outwaarden in voor batch- of queryuitvoering die hoger is dan de verwachte uitvoeringstijd voor de batch of query.
Gebruik de volgende procedures om de juistheid te maximaliseren:
Gebruik
-V 16om berichten van ernstniveau 16 te registreren. Ernst 16 berichten geven algemene fouten aan die u kunt corrigeren.Controleer de afsluitcode en
DOS ERRORLEVELvariabele nadat het proces is afgesloten. sqlcmd retourneert0normaal. Anders wordt deERRORLEVELingesteld zoals geconfigureerd door-V. Met andere woorden, verwachtERRORLEVELniet dat deze dezelfde waarde is als het foutnummer dat door SQL Server is gerapporteerd. Het foutnummer is een SQL Server-specifieke waarde die overeenkomt met de systeemfunctie @@ERROR.ERRORLEVELis een sqlcmd-specifieke waarde om aan te geven waarom sqlcmd is beëindigd. De waarde ervan wordt beïnvloed door de-bparameter op te geven.
Het gebruik van -V 16 in combinatie met het controleren van de afsluitcode en DOS ERRORLEVEL kan helpen bij het opsporen van fouten in geautomatiseerde omgevingen, met name kwaliteitspoorten vóór een productierelease.
Verwante inhoud
- Geïnstalleerde versie van sqlcmd-hulpprogramma controleren
- Het sqlcmd-hulpprogramma downloaden en installeren
- Opdrachten in het hulpprogramma sqlcmd
- Sqlcmd gebruiken met scriptvariabelen
- quickstart: Sql Server Linux-containerinstallatiekopieën uitvoeren met Docker
- het hulpprogramma sqlcmd starten
- T-SQL uitvoeren vanuit een scriptbestand met sqlcmd
- Sqlcmd gebruiken
- Verbinding maken met SQL Server met sqlcmd
- SQLCMD-scripts bewerken met Query-editor
- een cmdExec-taakstap maken