Delen via


SQLCMD-scripts bewerken met Query-editor

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

  1. Klik in Objectverkenner met de rechtermuisknop op de server en selecteer vervolgens Nieuwe query om een nieuw venster queryeditor te openen.

  2. In het -menu Query selecteer SQLCMD-modus.

    SQLCMD-instructies worden uitgevoerd in de context van de query-editor.

  3. Selecteer in de lijst met beschikbare databases op de werkbalk AdventureWorks2025.

  4. Typ in het venster van de queryeditor de volgende Transact-SQL-instructies en de !!DIR SQLCMD-instructie:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Druk 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.

  6. 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 de cmd.exe-opdrachtprocessor. De tekst na !! wordt doorgegeven als een parameter aan cmd.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 GO opdracht 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, maar PRINT '$(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|stdout 2
  • :out <filename>|stderr|stdout 2

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