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.
Gebruik de queryeditor in SQL Server Management Studio (SSMS) om query's te schrijven en te bewerken als SQLCMD-scripts. U kunt SQLCMD-scripts gebruiken om Windows-systeemopdrachten en Transact-SQL-instructies in hetzelfde script te verwerken.
SQLCMD-modus inschakelen
Als u de queryeditor wilt gebruiken om SQLCMD-scripts te schrijven of te bewerken, moet u de SQLCMD-scriptmodus inschakelen. De SQLCMD-modus is niet standaard ingeschakeld. U kunt de scriptmodus inschakelen door het pictogram SQLCMD-modus op de werkbalk te selecteren of door de SQLCMD-modus te selecteren in het menu Query .
Opmerking
Wanneer u de SQLCMD-modus inschakelt, worden IntelliSense en het Transact-SQL foutopsporingsprogramma uitgeschakeld in de queryeditor.
SQLCMD-scripts in de queryeditor kunnen dezelfde functies gebruiken die alle Transact-SQL scripts gebruiken. Deze functies zijn onder andere:
- Kleurcodering
- Scripts uitvoeren
- Bronbeheer
- Scripts parseren
- Showplan (Planweergave)
SQLCMD-scripts inschakelen in Query-editor
Als u SQLCMD-scripts wilt inschakelen voor een actief queryeditorvenster, gebruikt u de volgende procedure.
Een queryeditorvenster overschakelen naar de SQLCMD-modus
Klik in Objectverkenner met de rechtermuisknop op de server en selecteer vervolgens Nieuwe query om een nieuw venster queryeditor te openen.
In het -menu Query selecteer SQLCMD-modus.
SQLCMD-instructies worden uitgevoerd in de context van de query-editor.
Selecteer in de lijst met beschikbare databases op de werkbalk
AdventureWorks2025.Typ in het venster van de 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 row(s) affected)<The directory information>(4 row(s) affected)
Belangrijk
Wanneer u sqlcmd vanaf de opdrachtregel uitvoert, is volledige interactie met het besturingssysteem mogelijk. Wanneer u de queryeditor in de SQLCMD-modus gebruikt, moet u ervoor zorgen dat u geen interactieve instructies uitvoert. De queryeditor kan niet reageren op prompts van het besturingssysteem. Zie het sqlcmd-hulpprogramma voor meer informatie over het uitvoeren van SQLCMD vanaf de opdrachtregel.
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 zowel SQLCMD-opdrachten als 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.
U kunt opmerkingen en witruimte gebruiken voor SQLCMD-opdrachten.
SQLCMD-opdrachten binnen opmerkingentekens worden niet uitgevoerd.
Eénregelige opmerkingen beginnen met twee koppeltekens (
--) en moeten aan het begin van een regel staan.Voeg opdrachten van het besturingssysteem een voorvoegsel toe met 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, dus 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, moet u alle SQLCMD-opdrachten vooraf laten gaan door een dubbele punt (
:).De
GOopdracht kan worden gebruikt zonder voorwoord of voorafgegaan door!!:.De query-editor ondersteunt omgevingsvariabelen en -variabelen die u definieert als onderdeel van een SQLCMD-script, maar biedt geen ondersteuning voor ingebouwde SQLCMD- of osql-variabelen . SSMS verwerkt SQLCMD-variabelen hoofdlettergevoelig. Produceert bijvoorbeeld
PRINT '$(COMPUTERNAME)'het juiste resultaat, maarPRINT '$(ComputerName)'retourneert een fout.
Waarschuwing
SSMS maakt gebruik van de SqlClient .NET-bibliotheek voor uitvoering in de normale en SQLCMD-modus. Wanneer u de query uitvoert vanaf de opdrachtregel, gebruikt sqlcmd de OLE DB-provider. Omdat er verschillende standaardopties kunnen worden toegepast, ziet u mogelijk een ander gedrag tijdens het uitvoeren van dezelfde query in de SQLCMD-modus in SSMS, vergeleken met de SQLCMD-modus in het hulpprogramma sqlcmd .
Ondersteunde SQLCMD-syntaxis
De query-editor ondersteunt de volgende SQLCMD-scripttrefwoorden:
[!!:]GO[count]!! <command>:exit(statement):Quit:r <filename>:setvar <var> <value>-
:connect server[\instance] [-l login_timeout] [-U user [-P password]]1 :on error [ignore|exit]-
:error <filename>|stderr|stdout2 -
:out <filename>|stderr|stdout2
1 Zie :connect voor meer informatie over de opdracht.
2 De queryeditor verzendt uitvoer naar het tabblad Berichten voor stderr en stdout.
De query-editor biedt geen ondersteuning voor SQLCMD-opdrachten die niet zijn opgenomen in de voorgaande lijst. Wanneer u een script uitvoert dat niet-ondersteunde SQLCMD-trefwoorden bevat, negeert de queryeditor de opdracht. Voor elk niet-ondersteund trefwoord verzendt de query-editor het volgende bericht naar de bestemming:
Ignoring command <ignored_command>
Waarschuwing
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. Omdat de queryeditor niet kan reageren op prompts van het besturingssysteem, moet u er ook op letten dat u geen interactieve instructies uitvoert.
Kleurcodering in SQLCMD-scripts
Wanneer u SQLCMD-scripts inschakelt, 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. Er worden twee Transact-SQL-instructies SELECT uitgevoerd en één besturingssysteemopdracht waarmee de huidige map wordt afgedrukt. 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