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)
Met behulp van de Database Engine-queryeditor in SQL Server Management Studio kunt u query's schrijven en bewerken als SQLCMD-scripts. U gebruikt SQLCMD-scripts bij het verwerken van Windows-systeemopdrachten en Transact-SQL-instructies in hetzelfde script.
SQLCMD-modus
Als u de Database Engine-queryeditor wilt gebruiken om SQLCMD-scripts te schrijven of te bewerken, moet u de SQLCMD-scriptmodus inschakelen. De SQLCMD-modus is standaard niet toegestaan in de Query-editor. U kunt de scriptmodus inschakelen door het pictogram SQLCMD-modus op de werkbalk te selecteren of door SQLCMD-modus te selecteren in het menu Query.
Notitie
Als u de SQLCMD-modus inschakelt, worden IntelliSense en het Transact-SQL foutopsporingsprogramma in de Database Engine-queryeditor uitgeschakeld.
SQLCMD-scripts in de Query-editor kunnen dezelfde functies gebruiken die alle Transact-SQL scripts gebruiken. Deze functies omvatten het volgende:
- Kleurcodering
 - Scripts uitvoeren
 - Broncodebeheer
 - Scripts parseren
 - Showplan (Planweergave)
 
SQLCMD-scripts inschakelen in Query-editor
Gebruik de volgende procedure om SQLCMD-scripts in te schakelen voor een actief queryeditor-venster voor database-engine.
Een queryeditorvenster van een database-engine overschakelen naar de SQLCMD-modus
Klik in de Objectverkenner met de rechtermuisknop op de server en selecteer vervolgens Nieuwe Queryom een nieuw venster voor de Database Engine Query Editor te openen.
In het -menu Query selecteer SQLCMD-modus.
De Query-editor voert SQLCMD-instructies uit in de context van de Query-editor.
Selecteer in de lijst met beschikbare databases op de werkbalk
AdventureWorks2022.Typ in het venster Queryeditor de volgende Transact-SQL-instructies en de
!!DIRSQLCMD-instructie:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GODruk op F5 om de sectie met gemengde Transact-SQL- en MS-DOS-verklaringen uit te voeren.
Let op de twee deelvensters met SQL-resultaten uit de eerste en derde instructies.
Selecteer in het deelvenster Resultaten het tabblad Berichten om de berichten uit alle drie de uitspraken weer te geven.
- (6 rijen beïnvloed)
 - <De directory-informatie>
 - (4 rijen aangepast)
 
Belangrijk
Wanneer het sqlcmd-hulpprogramma wordt uitgevoerd vanaf de opdrachtregel, is volledige interactie met het besturingssysteem mogelijk. Wanneer u queryeditor gebruikt in SQLCMD-modus, moet u ervoor zorgen dat u geen interactieve instructies uitvoert. De Query-editor kan niet reageren op prompts van het besturingssysteem.
Zie het sqlcmd-hulpprogramma of volg de sqlCMD-zelfstudie voor meer informatie over het uitvoeren van SQLCMD.
SQLCMD-scripts standaard inschakelen
Als u SQLCMD-scripts standaard wilt inschakelen, selecteert u in het menu Extra de optie Opties, vouwt u Queryuitvoeringen SQL Serveruit, selecteert u de pagina Algemeen en schakelt u vervolgens het selectievakje Nieuwe query's standaard openen in SQLCMD-modus in.
SQLCMD-scripts schrijven en bewerken
Nadat u de scriptmodus hebt ingeschakeld, kunt u SQLCMD-opdrachten en Transact-SQL-instructies schrijven. De volgende regels zijn van toepassing:
SQLCMD-opdrachten moeten de eerste instructie op een regel zijn.
Op elke regel is slechts één SQLCMD-opdracht toegestaan.
SQLCMD-opdrachten kunnen worden voorafgegaan door opmerkingen of witruimte.
SQLCMD-opdrachten binnen opmerkingentekens worden niet uitgevoerd.
Opmerkingstekens voor een enkele regel zijn twee leestekens (
--)) en moeten aan het begin van een regel staan.Opdrachten van het besturingssysteem moeten worden voorafgegaan door twee uitroeptekens (
!!). Het commando dubbele uitroeptekens zorgt ervoor dat de instructie die op de uitroeptekens volgt, wordt uitgevoerd met behulp van decmd.exe-opdrachtprocessor. De tekst na!!wordt doorgegeven als een parameter aancmd.exe, zodat de laatste opdrachtregel wordt uitgevoerd als:"%SystemRoot%\system32\cmd.exe /c <text after !!>".Als u een duidelijk onderscheid wilt maken tussen SQLCMD-opdrachten en Transact-SQL, moeten alle SQLCMD-opdrachten worden voorafgegaan door een dubbele punt (
:).De
GOopdracht kan worden gebruikt zonder voorwoord of voorafgegaan door!!:De Database Engine Query-editor ondersteunt omgevingsvariabelen en -variabelen die zijn gedefinieerd als onderdeel van een SQLCMD-script, maar biedt geen ondersteuning voor ingebouwde SQLCMD- of osql- variabelen. SQLCMD-verwerking door SQL Server Management Studio is hoofdlettergevoelig voor variabelen. Print '$(COMPUTERNAAM)' produceert bijvoorbeeld het juiste resultaat, maar PRINT '$(ComputerName)' retourneert een fout.
Voorzichtigheid
SQL Server Management Studio maakt gebruik van Microsoft .NET Framework SqlClient voor uitvoering in de normale en SQLCMD-modus. Wanneer SQLCMD vanaf de opdrachtregel wordt uitgevoerd, wordt de OLE DB-provider gebruikt. Omdat er verschillende standaardopties kunnen worden toegepast, kunt u verschillende gedragingen krijgen tijdens het uitvoeren van dezelfde query in de SQL Server Management Studio SQLCMD-modus en in het hulpprogramma sqlcmd .
Ondersteunde SQLCMD-syntaxis
De Query-editor van de database-engine ondersteunt de volgende TREFwoorden voor SQLCMD-scripts:
[!!:]GO[count]!! <command>:exit(statement):Quit:r <filename>:setvar <var> <value>:connect server[\instance] [-l login_timeout] [-U user [-P password]]:on error [ignore|exit]:error <filename>|stderr|stdout:out <filename>|stderr|stdout
Notitie
Uitvoer verzenden naar het tabblad Berichten voor zowel :error als :out, stderr en stdout.
SQLCMD-opdrachten die hierboven niet worden vermeld, worden niet ondersteund in Query-editor. Wanneer een script met SQLCMD-trefwoorden niet wordt ondersteund, verzendt de Query-editor een bericht 'Opdracht negeren <genegeerde opdracht>' naar de bestemming voor elk niet-ondersteund trefwoord. Het script wordt uitgevoerd, maar de niet-ondersteunde opdrachten worden genegeerd.
Voorzichtigheid
Omdat u SQLCMD niet start vanaf de opdrachtregel, zijn er enkele beperkingen bij het uitvoeren van Query-editor in de SQLCMD-modus. U kunt geen opdrachtregelparameters zoals variabelen doorgeven en omdat de Query-editor niet kan reageren op prompts van het besturingssysteem, moet u voorzichtig zijn met het uitvoeren van interactieve instructies.
Kleurcodering in SQLCMD-scripts
Als SQLCMD-scripts zijn ingeschakeld, worden scripts kleurcoded. De kleurcodering voor Transact-SQL trefwoorden blijft hetzelfde. SQLCMD-opdrachten worden weergegeven met een gearceerde achtergrond.
Voorbeelden
In het volgende voorbeeld wordt een SQLCMD-instructie gebruikt om een uitvoerbestand met de naam testoutput.txtte maken, worden twee Transact-SQL SELECT-instructies uitgevoerd, samen met één opdracht van het besturingssysteem (om de huidige map af te drukken). Het resulterende bestand bevat de berichtuitvoer van de DIR-instructie en de resultaten van de Transact-SQL-instructies.
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO