2010-10-02 3 views

Respuesta

21

No son estrictamente necesarios, solo son instrucciones para que SQL Server Management Studio ejecute las declaraciones hasta este momento y luego continúe. GO es no una palabra clave T-SQL o algo así, es solo una instrucción que funciona en SSMS.

A veces, necesita un IR - e.g. si agrega una columna a una tabla y luego desea volver a seleccionarla, debe tener un GO entre la adición de la columna y la consulta de la misma.

E.g. si intenta ejecutar este, obtendrá errores de SSMS:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME 

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5 

Resultados: en

Msg 207, nivel 16, estado 1, línea 9 nombre de columna no válido 'datetimestamp'.

El punto es: SSMS está tratando de verificar toda la instrucción a la vez, pero en la instrucción SELECT, se quejará de la columna DateTimeStamp que falta.

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME 
GO  

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5 

Si se pone un GO entre los dos estados, que va a trabajar, porque no va a SSMS analizar y verificar toda la declaración antes de tiempo - que va a hacer la primera parte, y sólo entonces analizar el segundo (después del GO).

Pero a excepción de situaciones como esta, GO casi nunca es necesario.

0

Solo es obligatorio en las herramientas de SQL decirle a SSMS dónde está el inicio y el final del lote. También se requiere para algunas declaraciones como CREATE TRIGGER que debe ser la primera en el lote

Por ejemplo, en una llamada a C# a SQL Server no tiene sentido

Cuestiones relacionadas