Anweisungen für SQL Server-Hilfsprogramme - GOSQL Server Utilities Statements - GO

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Serverenthält Befehle, die nicht Transact-SQLTransact-SQL sind aber -Anweisungen erkannt, durch die Sqlcmd und Osql Hilfsprogramme und SQL Server Management StudioSQL Server Management Studio Code-Editor. provides commands that are not Transact-SQLTransact-SQL statements, but are recognized by the sqlcmd and osql utilities and SQL Server Management StudioSQL Server Management Studio Code Editor. Die Befehle können zur Vereinfachung der Lesbarkeit und Ausführung von Batches und Skripts verwendet werden.These commands can be used to facilitate the readability and execution of batches and scripts.

GO signalisiert das Ende eines Batches von Transact-SQLTransact-SQL Anweisungen, die die SQL ServerSQL Server Hilfsprogramme.GO signals the end of a batch of Transact-SQLTransact-SQL statements to the SQL ServerSQL Server utilities.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax


GO [count]  

ArgumenteArguments

countcount
Eine positive ganze Zahl.Is a positive integer. Der Batch, der GO vorausgeht, wird so oft wie angegeben ausgeführt.The batch preceding GO will execute the specified number of times.

HinweiseRemarks

GO ist keine Transact-SQLTransact-SQL Anweisung; Es wird ein Befehl erkannt durch die Sqlcmd und Osql Hilfsprogramme und SQL Server Management StudioSQL Server Management Studio Code-Editor.GO is not a Transact-SQLTransact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management StudioSQL Server Management Studio Code editor.

Die SQL ServerSQL Server-Hilfsprogramme interpretieren GO als ein Signal zum Senden des aktuellen Batches von Transact-SQLTransact-SQL-Anweisungen an eine Instanz von SQL ServerSQL Server. SQL ServerSQL Server utilities interpret GO as a signal that they should send the current batch of Transact-SQLTransact-SQL statements to an instance of SQL ServerSQL Server. Der aktuelle Anweisungsbatch besteht aus allen Anweisungen, die seit dem letzten GO eingegeben wurden. Wenn dies das erste GO ist, besteht er aus allen Anweisungen, die seit dem Beginn der Ad-hoc-Sitzung oder des Skripts eingegeben wurden.The current batch of statements is composed of all statements entered since the last GO, or since the start of the ad hoc session or script if this is the first GO.

Eine Transact-SQLTransact-SQL-Anweisung kann nicht dieselbe Zeile wie ein GO-Befehl belegen.A Transact-SQLTransact-SQL statement cannot occupy the same line as a GO command. Allerdings kann die Zeile Kommentare enthalten.However, the line can contain comments.

Benutzer müssen die Regeln für Batches befolgen.Users must follow the rules for batches. So muss z. B. jede Ausführung einer gespeicherten Prozedur nach der ersten Anweisung in einem Batch das EXECUTE-Schlüsselwort einschließen.For example, any execution of a stored procedure after the first statement in a batch must include the EXECUTE keyword. Der Bereich von lokalen (benutzerdefinierten) Variablen ist auf einen Batch beschränkt, auf die nicht nach einem GO-Befehl verwiesen werden kann.The scope of local (user-defined) variables is limited to a batch, and cannot be referenced after a GO command.

USE AdventureWorks2012;  
GO  
DECLARE @MyMsg VARCHAR(50)  
SELECT @MyMsg = 'Hello, World.'  
GO -- @MyMsg is not valid after this GO ends the batch.  

-- Yields an error because @MyMsg not declared in this batch.  
PRINT @MyMsg  
GO  

SELECT @@VERSION;  
-- Yields an error: Must be EXEC sp_who if not first statement in   
-- batch.  
sp_who  
GO  

SQL ServerSQL Server-Anwendungen können zum Ausführen eines Batches mehrere Transact-SQLTransact-SQL-Anweisungen an eine Instanz von SQL ServerSQL Server senden. applications can send multiple Transact-SQLTransact-SQL statements to an instance of SQL ServerSQL Server for execution as a batch. Die Anweisungen im Batch werden dann in einen einzelnen Ausführungsplan kompiliert.The statements in the batch are then compiled into a single execution plan. Programmierer, die Ad-hoc-Anweisungen in den SQL ServerSQL Server-Hilfsprogrammen ausführen oder aus Transact-SQLTransact-SQL-Anweisungen Skripts zur Ausführung durch die SQL ServerSQL Server-Hilfsprogramme erstellen, verwenden GO, um das Ende eines Batches zu signalisieren.Programmers executing ad hoc statements in the SQL ServerSQL Server utilities, or building scripts of Transact-SQLTransact-SQL statements to run through the SQL ServerSQL Server utilities, use GO to signal the end of a batch.

Auf den ODBC- oder OLE DB-APIs basierende Anwendungen erhalten einen Syntaxfehler, wenn sie versuchen, einen GO-Befehl auszuführen.Applications based on the ODBC or OLE DB APIs receive a syntax error if they try to execute a GO command. Die SQL ServerSQL Server-Hilfsprogramme senden nie einen GO-Befehl an den Server.The SQL ServerSQL Server utilities never send a GO command to the server.

Verwenden Sie kein Semikolon als Abschlusszeichen für Anweisung nach GO.Do not use a semicolon as a statement terminator after GO.

BerechtigungenPermissions

GO ist ein Hilfsprogrammbefehl, für den keine Berechtigungen erforderlich sind.GO is a utility command that requires no permissions. Der Befehl kann von jedem Benutzer ausgeführt werden.It can be executed by any user.

-- Yields an error because ; is not permitted after GO  
SELECT @@VERSION;  
GO;  

BeispieleExamples

Im folgenden Beispiel werden zwei Batches erstellt.The following example creates two batches. Der erste Batch enthält nur eine USE``AdventureWorks2012 Anweisung, um den Datenbankkontext festzulegen.The first batch contains only a USE``AdventureWorks2012 statement to set the database context. Die verbleibenden Anweisungen verwenden eine lokale Variable.The remaining statements use a local variable. Daher müssen alle Deklarationen von lokalen Variablen in einem einzelnen Batch gruppiert werden.Therefore, all local variable declarations must be grouped in a single batch. Dies wird erreicht, indem ein GO-Befehl erst nach der letzten Anweisung, die auf die Variable verweist, ausgeführt wird.This is done by not having a GO command until after the last statement that references the variable.

USE AdventureWorks2012;  
GO  
DECLARE @NmbrPeople int  
SELECT @NmbrPeople = COUNT(*)  
FROM Person.Person;  
PRINT 'The number of people as of ' +  
      CAST(GETDATE() AS char(20)) + ' is ' +  
      CAST(@NmbrPeople AS char (10));  
GO  

Im folgenden Beispiel werden die Anweisungen im Batch zweimal ausgeführt.The following example executes the statements in the batch twice.

SELECT DB_NAME();  
SELECT USER_NAME();  
GO 2