No son estrictamente necesarios, son solo instrucciones para que SQL Server Management Studio ejecute las declaraciones hasta este punto ahora y luego continúe. GO
es no una palabra clave T-SQL o cualquier cosa, es solo una instrucción que funciona en SSMS.
A veces, necesita un GO, p. si agrega una columna a una tabla y luego desea seleccionarla nuevamente, debe tener un GO entre agregar la columna y consultarla.
P.ej. si intenta ejecutar esto, obtendrá errores de SSMS:
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Resultados en:
El punto es:SSMS está tratando de verificar la declaración completa a la vez, pero en la declaración SELECT, se quejará de la falta de DateTimeStamp
columna.
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Si pones un GO
entre las dos declaraciones, funcionará, porque SSMS no analizará ni verificará la declaración completa antes de tiempo; hará la primera parte y luego solo analizará la segunda (después de GO
).
Pero aparte de situaciones como esta, casi nunca se requiere GO.