Wat is het nut van GO in SQL Server Management Studio & SQL afhandelen?

SQL Server Management Studio voegt altijd een GO-commando in wanneer ik een query maak met het rechtsklikmenu “Script As”. Waarom? Wat doet GO eigenlijk?


Antwoord 1, autoriteit 100%

Het is een batch-terminator, je kunt het echter veranderen in wat je maar wilt


Antwoord 2, autoriteit 97%

Sinds Management Studio 2005 lijkt het erop dat je GOkunt gebruiken met een intparameter, zoals:

INSERT INTO mytable DEFAULT VALUES
GO 10

Het bovenstaande zal 10 rijen invoegen in mytable. Over het algemeen zal GOde gerelateerde sql-commando’s nkeeruitvoeren.


Antwoord 3, autoriteit 65%

De GO-opdracht is geen Transact-SQL-instructie, maar een speciale opdracht die wordt herkend door verschillende MS-hulpprogramma’s, waaronder de code-editor van SQL Server Management Studio.

Het GO-commando wordt gebruikt om SQL-commando’s te groeperen in batches die samen naar de server worden verzonden. De opdrachten die in de batch zijn opgenomen, dat wil zeggen de reeks opdrachten sinds de laatste GO-opdracht of het begin van de sessie, moeten logisch consistent zijn. U kunt bijvoorbeeld geen variabele in de ene batch definiëren en deze vervolgens in een andere gebruiken, aangezien het bereik van de variabele beperkt is tot de batch waarin deze is gedefinieerd.

Zie voor meer informatie http://msdn.microsoft.com/en -us/library/ms188037.aspx.


Antwoord 4, autoriteit 11%

GO is geen SQL-sleutelwoord.

Het is een batchscheidingsteken dat wordt gebruikt door clienttools (zoals SSMS) om het hele script in batches op te splitsen

Meerdere keren beantwoord… voorbeeld 1


Antwoord 5, autoriteit 8%

Om toe te voegen aan de bestaande antwoorden, wanneer u weergaven maakt, moet u deze opdrachten in batches scheiden met behulp van GO, anders krijgt u de foutmelding 'CREATE VIEW' must be the only statement in the batch. U kunt bijvoorbeeld het volgende sql-script niet uitvoeren zonder GO

create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2

Antwoord 6, autoriteit 3%

Go betekent dat alle SQL-instructies die ervoor en na een eerdere GO worden geschreven, naar de SQL-server gaan voor verwerking.

Select * from employees;
GO    -- GO 1
update employees set empID=21 where empCode=123;
GO    -- GO 2

In het bovenstaande voorbeeld gaan instructies vóór GO 1 in een batch naar de sql-server en vervolgens gaan alle andere instructies vóór GO 2 in een andere batch naar de sql-server. Dus zoals we zien heeft het gescheiden batches.


Antwoord 7, autoriteit 2%

Use herDatabase
GO ; 

Code zegt de instructies boven de GO-markering uit te voeren.
Mijn standaarddatabase is myDatabase, dus in plaats van myDatabase GOte gebruiken en de huidige query te maken om herDatabase

te gebruiken


Antwoord 8

Een gebruik dat ik nog niet in de lijst heb gezien, is foutbestendigheid.
Omdat alleen de opdrachten tussen twee GO’s tegelijk worden uitgevoerd, betekent dit dat een compileerfout in één opdracht kan worden gescheiden van andere. Normaal gesproken zorgen compileerfouten in een batch ervoor dat het hele ding niet wordt uitgevoerd.

exec do.Something
GO
sel from table
print 'here'
GO
print 'there'

Hierboven wordt ‘here’ niet afgedrukt vanwege de fout in de ‘sel’-instructie.

Nu een GO in het midden toevoegen:

exec do.Something
GO
sel from table
GO
print 'here'
GO
print 'there'

Je krijgt een foutmelding voor ‘sel’ zoals eerder, maar ‘here’ krijgt wel uitvoer.

Other episodes