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".