Delen via


sqlcmd-hulpprogramma

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

Met het hulpprogramma sqlcmd kunt u Transact-SQL instructies, systeemprocedures en scriptbestanden invoeren 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.

Notitie

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 zijn 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-tools pakket 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) Preview introduceert TDS 8.0-ondersteuning voor het hulpprogramma sqlcmd .

Syntaxis

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.

Zie ODBC sqlcmd-syntaxisvoor meer uitgebreide informatie over sqlcmd syntaxis en gebruik.

Ingrijpende wijzigingen van sqlcmd (ODBC)

Verschillende switches en gedragingen worden gewijzigd in het hulpprogramma sqlcmd (Go). Voor de meest up-to-date lijst met ontbrekende vlaggen voor achterwaartse compatibiliteit, gaat u naar de Prioriteer de implementatie van backwardcompatibiliteitsvlaggen GitHub-discussie.

  • In eerdere versies van sqlcmd (Go) is de -P-switch tijdelijk verwijderd en konden wachtwoorden voor SQL Server-verificatie alleen worden verstrekt via deze mechanismen:

    • De omgevingsvariabele SQLCMDPASSWORD
    • De opdracht :CONNECT
    • Wanneer hierom wordt gevraagd, kan de gebruiker het wachtwoord typen om een verbinding te voltooien
  • -r vereist een 0 of 1 argument

  • -R schakelaar wordt verwijderd.

  • -I schakelaar wordt verwijderd. Voeg SET QUOTED IDENTIFIER OFF toe aan uw scripts om het gedrag van geciteerde identifiers uit te schakelen.

  • -N gebruikt een tekenreekswaarde die een van true, false of disable kan zijn om de versleutelingskeuze op te geven. (default is hetzelfde als het weglaten van de parameter)

    • Als -N en -C niet worden opgegeven, onderhandelt sqlcmd over verificatie met de server zonder het servercertificaat te valideren.
    • Als -N is opgegeven, maar -C niet is, moet sqlcmd het servercertificaat valideren. Een false waarde voor versleuteling kan nog steeds leiden tot de versleuteling van het aanmeldingspakket.
    • Als er zowel -N als -C worden opgegeven, gebruikt sqlcmd hun waarden voor versleutelingsonderhandeling.
    • Meer informatie over client-/serverversleutelingsonderhandeling vindt u op MS-TDS PRELOGIN-.

    Belangrijk

    In SQL Server 2025 (17.x) Preview kan -No zijn (voor optional), m (voor mandatory, de standaardinstelling) of s (voor strict). Als je -N niet opneemt, is -Nm de standaard (voor mandatory). Dit is een belangrijke wijziging van SQL Server 2022 (16.x) en eerdere versies.

  • -u Het gegenereerde Unicode-uitvoerbestand bevat de UTF-16 Little-Endian bytevolgordemarkering (BOM).

  • Sommige gedragingen die zijn behouden om de compatibiliteit OSQL te 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, die toestaat dat de door EXIT(query) uitgevoerde query zich over meerdere regels uitstrekt.

Verbindingen van het hulpprogramma sqlcmd (Go) zijn beperkt tot TCP-verbindingen. Benoemde pijpen worden op dit moment niet ondersteund in het go-mssqldb stuurprogramma.

Verbeteringen

  • :Connect heeft een optionele -G parameter om een van de verificatiemethoden voor Azure SQL Database - SqlAuthentication, ActiveDirectoryDefault, ActiveDirectoryIntegrated, ActiveDirectoryServicePrincipal, ActiveDirectoryManagedIdentity, ActiveDirectoryPassword te selecteren. Zie Verifiëren met Microsoft Entra ID in sqlcmd voor meer informatie. Als -G niet is opgegeven, wordt geïntegreerde beveiliging of SQL Server-verificatie gebruikt, afhankelijk van de aanwezigheid van een -U gebruikersnaamparameter.

  • Met de --driver-logging-level opdrachtregelparameter kunt u traceringen van het go-mssqldb stuurprogramma zien. Gebruik 64 om alle traceringen te bekijken.

  • sqlcmd (Go) kan resultaten afdrukken met behulp van een verticale indeling. Gebruik de parameter voor de -F vertical opdrachtregel om het in te stellen. De SQLCMDFORMAT scriptvariabele bepaalt deze ook.

    Notitie

    Dit is anders dan de switch voor -F (ODBC), die wordt gebruikt met om de hostnaam in het certificaat op te geven.

Opdrachtregelopties

De volgende tabel bevat de opdrachtregelopties die beschikbaar zijn in sqlcmd en welke besturingssystemen ze ondersteunen.

Opdrachtregeloptie Ondersteund in Windows Ondersteund in Linux en macOS
Aanmeldingsopties
-Een Ja Nee.
-C Ja Ja
-d db_name Ja Ja
-D Ja Ja
-l inlog_tijdslimiet Ja Ja
-E Ja Ja
-g Ja Ja
-G Ja Ja
- H-workstation_name Ja Ja
-j Ja Ja
-K toepassingsintentie Ja Ja
-M multisubnet_failover Ja Ja
-N Ja Ja
-P wachtwoord Ja Ja
-S [protocol:]server[\instance_name][,poort] Ja Ja
- U-login_id Ja Ja
-z new_password Ja Ja
-Z new_password Ja Ja
Invoer-/uitvoeropties
-f codepagina | i:codepagina[,o:codepagina] | o:codepagina[,i:codepagina] Ja Ja
-i input_file[,input_file2...] Ja Ja
-o uitvoerbestand Ja Ja
-r[0 | 1] Ja Ja
-R Ja Ja
-u Ja Ja
Queryuitvoeringsopties
-e Ja Ja
-Ik Ja Ja
-q "cmdlinequery" Ja Ja
-Q "cmdlinequery" Ja Ja
-t query_timeout Ja Ja
-v var = waarde [ var = waarde... ] Ja Nee.
-x Ja Ja
Opmaakopties
-h headers Ja Ja
-k [1 | 2] Ja Ja
-s col_separator Ja Ja
-w screen_width Ja Ja
-W Ja Ja
-y variabele_lengte_type_afbeeldingsbreedte Ja Ja
- Y-fixed_length_type_display_width Ja Ja
Opties voor foutrapportage
-b Ja Ja
-m error_level Ja Ja
- V-error_severity_level Ja Ja
Diverse opties
-pakketgrootte packet_size Ja Ja
-c batch_terminator Ja Ja
-L[c] Ja Nee.
-p[1] Ja Ja
-X[1] Ja Ja
-? Ja Ja

-Een

is alleen van toepassing op: Windows. Linux en macOS worden niet ondersteund.

Meldt u aan bij SQL Server met een toegewezen beheerdersverbinding (DAC). Dit type verbinding wordt gebruikt 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.

Notitie

Zie Programmeerrichtlijnen voor meer informatie over het maken van een toegewezen beheerdersverbinding (DAC) in macOS of Linux.

-C

Deze optie wordt door de client gebruikt om deze 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 -N en -C niet worden opgegeven, onderhandelt sqlcmd over verificatie met de server zonder het servercertificaat te valideren.
  • Als -N is opgegeven, maar -C niet is, moet sqlcmd het servercertificaat valideren. Een false waarde voor versleuteling kan nog steeds leiden tot de versleuteling van het aanmeldingspakket.
  • Als er zowel -N als -C worden opgegeven, gebruikt sqlcmd hun waarden voor 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.

Notitie

De optie -D is alleen beschikbaar op Linux- en macOS-clients. Op Windows-clients verwijst het naar een verouderde optie die is 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 behulp van Microsoft Entra ID, wordt een time-outwaarde van ten minste 30 seconden aanbevolen. De time-out voor aanmelden moet een getal zijn tussen 0 en 65534. Als de opgegeven 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.

Notitie

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.

-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 uw versie te bepalen.

-G

Deze optie wordt door de client gebruikt bij het maken van verbinding met Azure SQL Database of Azure Synapse Analytics om op te geven dat de gebruiker wordt geverifieerd met Microsoft Entra-verificatie. 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 vermeld in de kolom hostname van de sys.sysprocesses catalogusweergave en kan worden geretourneerd met behulp van de opgeslagen procedure sp_who. Als deze optie niet is opgegeven, is de standaardwaarde de naam van de huidige computer. Deze naam kan worden gebruikt om verschillende sqlcmd sessies te identificeren.

-j

Drukt onbewerkte foutberichten op het scherm weer.

-K applicatie_intentie

Declareert het workloadtype van de toepassing bij het maken van verbinding met een server. De enige ondersteunde waarde is ReadOnly. Als -K niet is opgegeven, 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.

Notitie

-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 -M niet is opgegeven, is -M uitgeschakeld.

Voor meer informatie, zie:

Notitie

-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

Deze optie wordt door de client gebruikt om een versleutelde verbinding aan te vragen.

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):

Notitie

Op Linux en macOS werd [s|m|o] toegevoegd in sqlcmd 18.0. -N kan o (voor optional), m (voor mandatory, de standaard) of s (voor strict) zijn. Als u in SQL Server 2025 (17.x) Preview niet opneemt -N, -Nm is (voor mandatory) de standaardinstelling. Dit is een belangrijke wijziging van SQL Server 2022 (16.x) en eerdere versies, waarbij -No de standaardinstelling is.

  • Als -N en -C niet worden opgegeven, onderhandelt sqlcmd over verificatie met de server zonder het servercertificaat te valideren.

  • Als -N is opgegeven, maar -C niet is, moet sqlcmd het servercertificaat valideren. Een false waarde voor versleuteling kan nog steeds leiden tot de versleuteling van het aanmeldingspakket.

  • Als er zowel -N als -C worden opgegeven, gebruikt sqlcmd hun waarden voor versleutelingsonderhandeling.

  • Gebruik in sqlcmd (ODBC) -F om de hostnaam in het certificaat op te geven. Bijvoorbeeld:

    sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -F server01.adventure-works.com
    

    Notitie

    Dit verschilt van de -F switch voor sqlcmd (Go), die wordt gebruikt om resultaten af te drukken met een verticale indeling.

-P wachtwoord

Een door de gebruiker opgegeven wachtwoord. Wachtwoorden zijn hoofdlettergevoelig. Als de -U optie wordt gebruikt, wordt de -P optie niet gebruikt en wordt de SQLCMDPASSWORD omgevingsvariabele niet ingesteld. Sqlcmd vraagt de gebruiker om een wachtwoord. We raden het gebruik van een null-wachtwoord (leeg) niet aan, maar u kunt het null-wachtwoord opgeven met behulp van een paar aaneengesloten dubbele aanhalingstekens voor de parameterwaarde ("").

Belangrijk

Het gebruik van -P moet als onveilig worden beschouwd. 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.

We raden u aan een sterk wachtwoord te gebruiken.

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.

Notitie

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 de optie -P wordt gebruikt met de optie -E, wordt er een foutbericht gegenereerd.

Als de optie -P wordt gevolgd door meer dan één argument, 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. Hieronder volgt een voorbeeldopdracht waarmee een toegangstoken wordt verkregen. 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]

Geeft het exemplaar van SQL Server aan waarmee verbinding moet worden gemaakt. Hiermee wordt de sqlcmd scriptvariabele SQLCMDSERVERingesteld.

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 er geen servercomputer is opgegeven, 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.

Notitie

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.

Notitie

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 de optie -U wordt gebruikt met de optie -E (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 nieuw_wachtwoord

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 nieuw_wachtwoord

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>

Invoer-/uitvoeropties

-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 er geen codepagina's zijn opgegeven, sqlcmd de huidige codepagina gebruikt 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 de -u optie is opgegeven, is de uitvoer altijd little-endian Unicode.

  • Als er geen uitvoerbestand is opgegeven, is de pagina met de uitvoercode de consolecodepagina. Met deze methode kan de uitvoer correct worden weergegeven op de console.

  • Er wordt uitgegaan dat meerdere invoerbestanden van dezelfde codepagina zijn. Unicode- en niet-Unicode-invoerbestanden kunnen worden gemengd.

Voer chcp in bij de opdrachtprompt om de codepagina van cmd.exete controleren.

Notitie

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. Er kunnen meerdere bestanden worden opgegeven die in volgorde worden gelezen 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 en de -Q/-q opties sluiten elkaar wederzijds uit.

Notitie

Als u de -i optie gevolgd door een of meer extra parameters gebruikt, moet u een spatie tussen de parameter en de waarde gebruiken. Dit 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.

Deze optie kan meerdere keren worden gebruikt:

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 is opgegeven, wordt de output_file opgeslagen in Unicode-formaat. Als de bestandsnaam niet geldig is, wordt er een foutbericht gegenereerd en sqlcmd afgesloten. sqlcmd- biedt geen ondersteuning voor gelijktijdig schrijven van meerdere sqlcmd processen naar hetzelfde bestand. De bestandsuitvoer is beschadigd of onjuist. De optie -f is ook relevant voor bestandsindelingen. Dit bestand wordt gemaakt als het niet bestaat. Een bestand met dezelfde naam van een eerdere sqlcmd sessie wordt overschreven. Het bestand dat hier is opgegeven, is niet het stdout-bestand. Als er een stdout-bestand is opgegeven, wordt dit bestand niet gebruikt.

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.

Notitie

Voor het hulpprogramma sqlcmd (Go) vereist -r een 0 of 1 argument.

-R

Alleen van toepassing op: ODBC-sqlcmd-.

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.

Notitie

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.

Notitie

Voor het hulpprogramma sqlcmd (Go) bevat het gegenereerde Unicode-uitvoerbestand de UTF-16 Little-Endian Byte-ordemarkering (BOM) dat eraan is toegevoegd.

Opties voor query-uitvoering

-e

Schrijft invoerscripts naar het standaarduitvoerapparaat (stdout).

-Ik

Alleen van toepassing op: ODBC-sqlcmd-.

Hiermee stelt u de SET QUOTED_IDENTIFIER verbindingsoptie in op ON. De standaardinstelling is OFF. Zie SET QUOTED_IDENTIFIERvoor meer informatie.

Notitie

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. Er kunnen meerdere door puntkomma's gescheiden query's worden uitgevoerd. Gebruik aanhalingstekens rond de query, zoals wordt weergegeven in het volgende voorbeeld.

Typ bij de opdrachtprompt:

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;"

Belangrijk

Gebruik de GO terminator niet in de query.

Als -b samen met deze optie is opgegeven, stopt sqlcmd bij een fout. -b wordt elders in dit artikel beschreven.

-Q "cmdlinequery"

Voert een query uit wanneer sqlcmd wordt gestart en stopt dan onmiddellijk sqlcmd. Query's met meerdere puntkomma's kunnen worden uitgevoerd.

Gebruik aanhalingstekens rond de query, zoals wordt weergegeven in het volgende voorbeeld.

Typ bij de opdrachtprompt:

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;"

Belangrijk

Gebruik de GO terminator niet in de query.

Als -b samen met deze optie is opgegeven, stopt sqlcmd bij een fout. -b 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 er geen query_timeout-waarde is opgegeven, treedt er geen time-out op voor de opdracht. De query_timeout moet een getal tussen 1 en 65534zijn. Als de opgegeven waarde niet numeriek is of niet in dat bereik valt, genereert sqlcmd- een foutbericht.

Notitie

De werkelijke time-outwaarde kan variëren van de opgegeven query_timeout waarde met enkele seconden.

-v var = waarde [ var = waarde... ]

is alleen van toepassing op: Windows. Linux en macOS worden niet ondersteund.

Hiermee maakt u een sqlcmd scriptvariabele die kan worden gebruikt in een sqlcmd script.

Plaats de waarde tussen aanhalingstekens als de waarde spaties bevat. U kunt meerdere <var>="<value>" waarden opgeven. Als er fouten optreden in een van de opgegeven waarden, 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. De standaardinstelling is om koppen één keer af te drukken voor elke set queryresultaten. Met deze optie stelt u de sqlcmd scriptvariabele in SQLCMDHEADERS. Gebruik -1 om op te geven dat kopteksten niet worden afgedrukt. Elke waarde die niet geldig is, 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.

  • -k verwijdert besturingstekens.
  • -k1 vervangt elk besturingselementteken door een spatie.
  • -k2 vervangt opeenvolgende besturingstekens door één spatie.

-s kolom_scheidingsteken

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 scherm_breedte

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

Met deze optie worden volgspaties uit een kolom verwijderd. Gebruik deze optie samen met de optie -s bij het voorbereiden van gegevens die naar een andere toepassing moeten worden geëxporteerd. 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)
  • tekst
  • tekst
  • afbeelding

UDT's kunnen een vaste lengte hebben, afhankelijk van de implementatie. Als deze lengte van een UDT met een vaste lengte 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.

Voorzichtigheid

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 naar de ERRORLEVEL variabele wordt geretourneerd, wordt 1 wanneer het SQL Server-foutbericht een ernstniveau heeft dat groter is dan 10; anders wordt de geretourneerde waarde 0. Als de -V optie is ingesteld, wordt naast -bsqlcmd geen fout gerapporteerd als het ernstniveau lager is dan de waarden die zijn ingesteld met behulp van -V. 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 foutenniveau

Hiermee bepaalt u welke foutberichten naar stdoutworden verzonden. Berichten met een ernstniveau groter dan of gelijk aan dit niveau worden verzonden. Wanneer deze waarde is ingesteld op -1, worden alle berichten, inclusief informatieve berichten, verzonden. Spaties zijn niet toegestaan 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 wordt 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. Batch- en CMD-bestanden kunnen worden gebruikt om de waarde van de ERRORLEVEL variabele te testen.

Diverse opties

-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_beëindiger

Specificeert het batch-eindteken. Opdrachten worden standaard beëindigd en naar SQL Server verzonden door het woord GO zelf op een regel te typen. 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]

is alleen van toepassing op: 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. Deze parameter kan niet worden gebruikt 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.

Notitie

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 de optionele parameter c is opgegeven, wordt de uitvoer weergegeven zonder de Servers: kopregel 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.)

Waar:

  • 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 de optionele parameter 1 is opgegeven, 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 de optionele parameter een andere waarde is 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 de optionele parameter 1 is opgegeven, genereert sqlcmd een foutbericht en wordt vervolgens afgesloten. De volgende opdrachten worden uitgeschakeld wanneer de optie -X wordt gebruikt:

  • ED
  • !! opdracht

Als de optie -X is opgegeven, 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.

Notitie

Voer in macOS in plaats daarvan sqlcmd '-?' (met aanhalingstekens) uit.

Opmerkingen

Opties hoeven niet te worden gebruikt in de volgorde die wordt weergegeven in de syntaxissectie.

Notitie

Als u de -i optie gevolgd door een of meer extra parameters gebruikt, moet u een spatie tussen de parameter en de waarde gebruiken. Dit is een bekend probleem in sqlcmd (Go).

Wanneer er meerdere resultaten worden geretourneerd, sqlcmd een lege regel tussen elke resultatenset in een batch afdrukken. Bovendien wordt het <x> rows affected bericht niet weergegeven wanneer het niet van toepassing is op de uitgevoerde 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.

Notitie

De opties -l, -Q, -Z of -i veroorzaken dat sqlcmd- na uitvoering afsluit.

De totale lengte van de sqlcmd opdrachtregel in de opdrachtomgeving (bijvoorbeeld cmd.exe of bash), inclusief alle argumenten en uitgebreide variabelen, wordt bepaald door het onderliggende besturingssysteem.

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. -D zorgt ervoor dat sqlcmd of bcp verbinding maakt 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 de lijst met vermeldingen die door het stuurprogramma worden ondersteund.

In een DSN is alleen de DRIVER vermelding vereist, maar om verbinding te 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 en 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 dezelfde optie is opgegeven in zowel de DSN als de sqlcmd - of bcp-opdrachtregel , overschrijft de opdrachtregeloptie de waarde die wordt gebruikt in de DSN. Als de DSN bijvoorbeeld een DATABASE vermelding heeft en de sqlcmd-opdrachtregel bevat -d, wordt de doorgegeven -d waarde gebruikt. Als Trusted_Connection=yes is opgegeven in de DSN, wordt Kerberos-verificatie gebruikt; gebruikersnaam (-U) en wachtwoord (-P), indien opgegeven, worden genegeerd.

Bestaande scripts die isql aanroepen, kunnen worden gewijzigd 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, probeer dan zoveel mogelijk te doen in één sqlcmd sessie, in plaats van in een reeks sessies.

  • Stel time-outwaarden in voor batch- of queryuitvoering die hoger zijn dan de tijd die u verwacht dat nodig is om de batch of query uit te voeren.

Gebruik de volgende procedures om de juistheid te maximaliseren:

  • Gebruik -V 16 om berichten van ernstniveau 16 te registreren. Ernst 16-berichten geven algemene fouten aan die door de gebruiker kunnen worden gecorrigeerd.

  • Controleer de afsluitcode en DOS ERRORLEVEL variabele nadat het proces is afgesloten. sqlcmd- retourneert 0 normaal, anders wordt de ERRORLEVEL ingesteld zoals geconfigureerd door -V. Met andere woorden, ERRORLEVEL zou niet dezelfde waarde moeten zijn als het foutnummer dat door SQL Server is gerapporteerd. Het foutnummer is een SQL Server-specifieke waarde die overeenkomt met de systeemfunctie @@ERROR. ERRORLEVEL is een sqlcmd-specifieke waarde om aan te geven waarom sqlcmd beëindigd en de waarde ervan wordt beïnvloed door -b opdrachtregelargument 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.