USE [user]
GO
/****** 对象:  Table [dbo].[city]    脚本日期: 05/08/2006 15:24:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[city](
[cityID] [int] NOT NULL,
[proID] [int] NOT NULL,
[cityName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]GO
SET ANSI_PADDING OFF其中的
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO都是什么意思,不加这些GO行不行??ON [PRIMARY] 又是什么意思呢??

解决方案 »

  1.   

    GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令。SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号。当前批语句由上一 GO 命令后输入的所有语句组成,如果是第一条 GO 命令,则由即席会话或脚本开始后输入的所有语句组成。 GO 命令和 Transact-SQL 语句不能在同一行中。但在 GO 命令行中可包含注释。用户必须遵照使用批处理的规则。例如,在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。 复制代码 
    USE AdventureWorks;
    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
    GOSELECT @@VERSION;
    -- Yields an error: Must be EXEC sp_who if not first statement in 
    -- batch.
    sp_who
    GO
     SQL Server 应用程序可以将多个 Transact-SQL 语句作为一个批发送到 SQL Server 的实例来执行。然后,该批中的语句被编译成一个执行计划。程序员在 SQL Server 实用工具中执行特殊语句,或生成 Transact-SQL 语句的脚本在 SQL Server 实用工具中运行时,使用 GO 作为批结束的信号。
      

  2.   

    每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。 例如,可以分别在三个磁盘驱动器上创建三个文件 Data1.ndf、Data2.ndf 和 Data3.ndf,然后将它们分配给文件组 fgroup1。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。通过使用在 RAID(独立磁盘冗余阵列)条带集上创建的单个文件也能获得同样的性能提高。但是,文件和文件组使您能够轻松地在新磁盘上添加新文件。 下表列出了存储在文件组中的所有数据文件。文件组  说明  
    主要
     包含主要文件的文件组。所有系统表都被分配到主要文件组中。 
     
    用户定义
     用户首次创建数据库或以后修改数据库时明确创建的任何文件组。 
     默认文件组
    如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。PRIMARY 文件组是默认文件组。 可以使用 ALTER DATABASE 语句更改默认文件组。但系统对象和表仍然分配给 PRIMARY 文件组,而不是新的默认文件组。
      

  3.   

    每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。 例如,可以分别在三个磁盘驱动器上创建三个文件 Data1.ndf、Data2.ndf 和 Data3.ndf,然后将它们分配给文件组 fgroup1。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。通过使用在 RAID(独立磁盘冗余阵列)条带集上创建的单个文件也能获得同样的性能提高。但是,文件和文件组使您能够轻松地在新磁盘上添加新文件。 下表列出了存储在文件组中的所有数据文件。文件组  说明  
    主要
     包含主要文件的文件组。所有系统表都被分配到主要文件组中。 
     
    用户定义
     用户首次创建数据库或以后修改数据库时明确创建的任何文件组。 
     默认文件组
    如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。PRIMARY 文件组是默认文件组。 可以使用 ALTER DATABASE 语句更改默认文件组。但系统对象和表仍然分配给 PRIMARY 文件组,而不是新的默认文件组。