I SQL Server er en batch en gruppe af en eller flere T-SQL-sætninger sendt på samme tid fra en applikation til SQL Server til udførelse.
Hvis du støder på en fejl som denne:
Msg 111, Level 15, State 1, Line 2
'CREATE VIEW' must be the first statement in a query batch.
Det er sandsynligvis fordi du kombinerer erklæringen med andre erklæringer i samme batch, hvilket ikke er tilladt i batches.
Den første del af fejlmeddelelsen vil afhænge af den faktiske erklæring, du bruger i din batch. I mit tilfælde er det CREATE VIEW
, men det kunne lige så nemt være CREATE PROCEDURE
, CREATE FUNCTION
osv., hvis det er de udsagn, du bruger.
Eksempel
Her er et eksempel på en kode, der ville forårsage denne fejl:
DROP VIEW IF EXISTS vAllCustomers;
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
Resultat:
Msg 111, Level 15, State 1, Line 3 'CREATE VIEW' must be the first statement in a query batch.
I mit tilfælde forsøger jeg at køre to udsagn; en DROP VIEW
sætning og en CREATE VIEW
erklæring.
Reglerne for en T-SQL-batch angiver, at CREATE VIEW
Udsagn kan ikke kombineres med andre udsagn i samme batch.
Med andre ord, CREATE VIEW
kan være den eneste erklæring i sin batch.
Sådan rettes fejlen
Vi kan rette ovenstående fejl ved blot at tilføje en batch-separator efter den første sætning.
I SQL Server er GO
nøgleord signalerer slutningen af en batch. Mere specifikt fortolker SQL Server-værktøjer GO
som et signal om, at de skal sende den aktuelle batch af T-SQL-sætninger til en forekomst af SQL Server.
Så vi kunne ændre det tidligere udsagn til dette:
DROP VIEW IF EXISTS vAllCustomers;
GO
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
GO
Tilføjer GO
løser problemet ved at adskille erklæringerne i to separate batches.
Bemærk, at GO
er faktisk ikke en del af T-SQL. Det er en kommando, der genkendes af SQL Server-værktøjer med det formål at adskille sætninger i batches.
Du kan muligvis ændre batchseparatoren, afhængigt af det værktøj, du bruger til at oprette forbindelse til SQL Server. For eksempel i SSMS kan du finde denne mulighed ved at gå til:Værktøjer> Valgmuligheder> Forespørgselsudførelse> SQL-server og se efter en mulighed, der siger noget som "Angiv et ord eller tegn, der kan bruges til at adskille batches".