Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Använd frågeredigeraren i SQL Server Management Studio (SSMS) för att skriva och redigera frågor som SQLCMD-skript. Du kan använda SQLCMD-skript för att bearbeta Windows-systemkommandon och Transact-SQL-instruktioner i samma skript.
Aktivera SQLCMD-läge
Om du vill använda frågeredigeraren för att skriva eller redigera SQLCMD-skript måste du aktivera SQLCMD-skriptläget. SQLCMD-läget är inte aktiverat som standard. Du kan aktivera skriptläge genom att välja ikonen SQLCMD-läge i verktygsfältet eller genom att välja SQLCMD-läge på frågemenyn .
Anmärkning
När du aktiverar SQLCMD-läge inaktiveras IntelliSense och Transact-SQL felsökningsprogrammet i frågeredigeraren.
SQLCMD-skript i frågeredigeraren kan använda samma funktioner som alla Transact-SQL skript använder. Dessa funktioner omfattar bland annat:
- Färgkodning
- Körning av skript
- Källkontroll
- Bearbeta skript
- Visningsplan
Aktivera SQLCMD-skript i Frågeredigeraren
Om du vill aktivera SQLCMD-skript för ett aktivt frågeredigerarefönster använder du följande procedur.
Växla ett frågeredigerarefönster till SQLCMD-läge
Högerklicka på servern i Object Explorer och välj sedan Ny fråga för att öppna ett nytt frågeredigerarefönster.
På menyn Query väljer du SQLCMD-läge.
SQLCMD-uttryck körs i kontexten för frågeredigeraren.
I verktygsfältet SQL Editor väljer du i listan
AdventureWorks2025.I frågeredigerarens fönster skriver du följande Transact-SQL-instruktioner och SQLCMD-instruktionen
!!DIR:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GOTryck på F5 för att köra avsnittet med blandade Transact-SQL- och MS-DOS-instruktioner.
Observera de två SQL-resultatrutorna från den första och tredje instruktionen.
I fönstret Resultat väljer du fliken Meddelanden för att se meddelandena från alla tre uttrycken:
(6 row(s) affected)<The directory information>(4 row(s) affected)
Viktigt!
När du kör sqlcmd från kommandoraden tillåter det fullständig interaktion med operativsystemet. När du använder frågeredigeraren i SQLCMD-läge bör du vara noga med att inte köra interaktiva instruktioner. Frågeredigeraren kan inte svara på operativsystemets frågor. Mer information om hur du kör SQLCMD från kommandoraden finns i sqlcmd-verktyget.
Aktivera SQLCMD-skript som standard
Om du vill aktivera SQLCMD-skript som standard går du till menyn Verktyg, väljer Alternativ, expanderar Frågekörningoch SQL Serverväljer du sidan Allmänt och markerar sedan kryssrutan Öppna nya frågor i SQLCMD-läge som standard.
Skriva och redigera SQLCMD-skript
När du har aktiverat skriptläge kan du skriva både SQLCMD-kommandon och Transact-SQL-instruktioner. Följande regler gäller:
SQLCMD-kommandon måste vara den första instruktionen på en rad.
Endast ett SQLCMD-kommando tillåts på varje rad.
Du kan använda kommentarer och tomt utrymme framför SQLCMD-kommandon.
SQLCMD-kommandon inom kommentarstecken körs inte.
Kommentarstecken med en rad är två bindestreck (
--) och måste visas i början av en rad.Prefixoperativsystemkommandon med två utropstecken (
!!). Kommandot dubbla utropstecken gör att instruktionen som följer utropspunkterna körs med hjälp avcmd.exe-kommandoprocessorn. Texten efter!!skickas som en parameter tillcmd.exe, så den sista kommandoraden körs som:"%SystemRoot%\system32\cmd.exe /c <text after !!>".För att göra en tydlig skillnad mellan SQLCMD-kommandon och Transact-SQL, prefix alla SQLCMD-kommandon med ett kolon (
:).Kommandot
GOkan användas utan förord eller föregås av!!:.Frågeredigeraren stöder miljövariabler och variabler som du definierar som en del av ett SQLCMD-skript, men det stöder inte inbyggda SQLCMD- eller osql-variabler . SSMS bearbetar SQLCMD-variabler som skiftlägeskänsliga. Till exempel
PRINT '$(COMPUTERNAME)'ger rätt resultat, menPRINT '$(ComputerName)'returnerar ett fel.
Försiktighet
SSMS använder SqlClient .NET-biblioteket för körning i vanligt läge och SQLCMD-läge. När du kör frågan från kommandoraden använder sqlcmd OLE DB-providern. Eftersom olika standardalternativ kan tillämpas kan du se olika beteenden när du kör samma fråga i SQLCMD-läge i SSMS, jämfört med SQLCMD-läge i sqlcmd-verktyget .
SQLCMD-syntax som stöds
Frågeredigeraren stöder följande nyckelord för SQLCMD-skript:
[!!:]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 Mer information om :connect kommandot finns i Kommandon i sqlcmd-verktyget.
2 Frågeredigeraren skickar utdata till fliken Meddelanden för stderr och stdout.
Frågeredigeraren stöder inte SQLCMD-kommandon som inte ingår i föregående lista. När du kör ett skript som innehåller SQLCMD-nyckelord som inte stöds ignorerar frågeredigeraren kommandot. För varje nyckelord som inte stöds skickar frågeredigeraren följande meddelande till målet:
Ignoring command <ignored_command>
Försiktighet
Eftersom du inte startar SQLCMD från kommandoraden finns det vissa begränsningar när du kör Frågeredigeraren i SQLCMD-läge. Du kan inte skicka in kommandoradsparametrar, till exempel variabler. Eftersom frågeredigeraren inte kan svara på operativsystemets frågor måste du också vara noga med att inte köra interaktiva instruktioner.
Färgkodning i SQLCMD-skript
När du aktiverar SQLCMD-skript är skripten färgkodade. Färgkodningen för Transact-SQL nyckelord förblir densamma. SQLCMD-kommandon visas med en skuggad bakgrund.
Examples
I följande exempel används en SQLCMD-instruktion för att skapa en utdatafil med namnet testoutput.txt. Den kör två Transact-SQL-instruktioner SELECT och ett operativsystemkommando som skriver ut den aktuella katalogen. Den resulterande filen innehåller meddelandeutdata från -instruktionen DIR och resultatet från Transact-SQL-uttrycken.
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO