GO non è in realtà un comando T-SQL. Il GO comando è stato introdotto dagli strumenti Microsoft come un modo per separare le istruzioni batch come la fine di una stored procedure. GO è supportato dagli strumenti dello stack Microsoft SQL ma non fa formalmente parte di altri strumenti.
Non puoi inserire un GO in una stringa di SQL e inviarlo come parte di un oggetto comando ADO.NET poiché SQL stesso non comprende il termine. Un altro modo per dimostrarlo è con il profiler:imposta alcune istruzioni che usano GO in Query Analyzer/Management Studio e quindi eseguire il profiler durante l'esecuzione. Vedrai che vengono inviati come comandi separati al server.
Il punto e virgola viene utilizzato per indicare la fine di un'istruzione stessa, non necessariamente un intero batch.
https://msdn.microsoft.com/en-us/library/ms188037 .aspx