Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Über den GO-Befehl in SQL Server

Wenn Sie T-SQL verwendet haben, werden Sie wahrscheinlich mit GO vertraut sein Befehl. Dieser Befehl wird oft am Ende einer Reihe von Anweisungen platziert.

Zum Beispiel:

CREATE DATABASE Books;
GO

Aber das GO Der Befehl ist nicht wirklich Teil von T-SQL. Es kann nicht einmal dieselbe Zeile wie eine T-SQL-Anweisung belegen.

GO ist einer der Befehle, die von sqlcmd erkannt werden und osql Dienstprogramme sowie SQL Server Management Studio Code Editor, um die Lesbarkeit und Ausführung von Batches und Skripts zu erleichtern. Das GO signalisiert das Ende eines Stapels von T-SQL-Anweisungen an die SQL Server-Dienstprogramme.

SQL Server-Dienstprogramme interpretieren GO als Signal, dass sie den aktuellen Stapel von T-SQL-Anweisungen an eine Instanz von SQL Server senden sollen. Der aktuelle Stapel von Anweisungen besteht aus allen Anweisungen, die seit dem letzten GO eingegeben wurden , oder seit dem Start der Ad-hoc-Sitzung oder des Skripts, wenn dies das erste GO ist .

Das GO Der Befehl kann praktisch sein, wenn Sie größere Skripte schreiben. Beim Schreiben größerer Skripte kann es manchmal zu einer Fehlermeldung kommen, da bestimmte Teile des Skripts erfordern, dass frühere Teile zuerst ausgeführt wurden. Sie können GO platzieren an strategischen Stellen innerhalb des Skripts, damit solche Teile zuerst ausgeführt werden.

Hier ist ein Beispiel für ein Skript, das eine partitionierte Tabelle erstellt. Es hat den GO Befehl, der an verschiedenen Stellen innerhalb des Skripts platziert wird, um sicherzustellen, dass jeder Abschnitt vor dem nächsten Abschnitt ausgeführt wird.

ALTER DATABASE Test
ADD FILEGROUP MoviesFg1;
GO  
ALTER DATABASE Test  
ADD FILEGROUP MoviesFg2;  
GO  
ALTER DATABASE Test  
ADD FILEGROUP MoviesFg3;  
GO  
ALTER DATABASE Test  
ADD FILEGROUP MoviesFg4;   

ALTER DATABASE Test   
ADD FILE   
(  
    NAME = MoviesFg1dat,  
    FILENAME = '/var/opt/mssql/data/MoviesFg1dat.ndf',  
    SIZE = 5MB,  
    MAXSIZE = 100MB,  
    FILEGROWTH = 5MB  
)  
TO FILEGROUP MoviesFg1;  
ALTER DATABASE Test   
ADD FILE   
(  
    NAME = MoviesFg2dat,  
    FILENAME = '/var/opt/mssql/data/MoviesFg2dat.ndf',  
    SIZE = 5MB,  
    MAXSIZE = 100MB,  
    FILEGROWTH = 5MB  
)  
TO FILEGROUP MoviesFg2;  
GO  
ALTER DATABASE Test   
ADD FILE   
(  
    NAME = MoviesFg3dat,  
    FILENAME = '/var/opt/mssql/data/MoviesFg3dat.ndf',  
    SIZE = 5MB,  
    MAXSIZE = 100MB,  
    FILEGROWTH = 5MB  
)  
TO FILEGROUP MoviesFg3;  
GO  
ALTER DATABASE Test   
ADD FILE   
(  
    NAME = MoviesFg4dat,  
    FILENAME = '/var/opt/mssql/data/MoviesFg4dat.ndf',  
    SIZE = 5MB,  
    MAXSIZE = 100MB,  
    FILEGROWTH = 5MB  
)  
TO FILEGROUP MoviesFg4;  
GO