CREATE DATABASE [test1] ON 
primary

  NAME = N'primary1_Data', --主要数据文件
  FILENAME = N'C:\xx\test_primary1.mdf' ,--不带目录创建可能会创建失败
  SIZE = 70144KB ,
  MAXSIZE = UNLIMITED, 
  FILEGROWTH = 16384KB
 ),

  NAME = N'other1_Data',   --次要数据文件,因为未指定primary关键字
  FILENAME = N'C:\xx\test_other1.ndf' ,
  SIZE = 70144KB ,
  MAXSIZE = UNLIMITED, 
  FILEGROWTH = 16384KB
),
primary 

  NAME = N'primary2_Data', --主要数据文件
  FILENAME = N'C:\xx\test_primary2.mdf' ,
  SIZE = 70144KB ,
  MAXSIZE = UNLIMITED, 
  FILEGROWTH = 16384KB
)
--------------------
问题提出:
   使用主数据文件是用指定primary 关键字指定的,因此上面sql创建了两个主文件
   但是很多教程都说主文件只能一个,包括msdn,不然就是说“每个数据库都有一个主文件”,很含糊。
   但我觉得是可以多个的,因为让主文件在每个磁盘都分布一个是有利多个磁头一起工作,提高速度。   

解决方案 »

  1.   

    每个数据库只能有一个主文件
    可以理解primary为一个文件组 并且如果没有特殊指定 primary为默认的文件组
      

  2.   

    msdn的create database定义中的部分说明是这样的
    -------------------------
    ON 
    指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。当后面是以逗号分隔的、用以定义主文件组的数据文件的 <filespec> 项列表时,需要使用 ON。主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的 <filegroup> 项列表(可选)。PRIMARY 
    指定关联的 <filespec> 列表定义主文件。在主文件组的 <filespec> 项中指定的第一个文件将成为主文件。一个数据库只能有一个主文件。有关详细信息,请参阅物理数据库文件和文件组。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。-----------------------------上面的意思是说“ON”到“filegroup”两个关键字之间的定义是主文件组,“PRIMARY”关键字用来指定主文件,可我多次指定PRIMARY居然也可以成功,晕倒。事实上,既然数据库只允许并只能有一个主数据文件,那么就应该不能多次指定PRIMARY关键字,大可强制永远将第一个定义的数据文件为主数据文件,省得混淆。不过楼上说的也有点道理
      

  3.   

    primary文件组是一个特殊文件组,所有系统对象都要放在这个文件组中。
    其他文件组都不能叫做primary。