俗话说,好记性不如烂笔头,好多东西是学了忘,忘了学,很头疼的,所以干脆把这些东西记下来。

     1.使用T-SQL创建数据库 School

--判断数据库是否存在
if exists(select * from sys.databases where name=N'School')
    drop database School
go

--创建数据库
create database School
on primary
    (
        name=school_main,                        --逻辑名称
        filename='d:\school_main.mdf',            --主要数据文件的路径及名字
        size=3MB,                                --初始大小
        maxsize=unlimited,                        --最大上限,未指定就是不设定文件上限,直到磁盘满
        filegrowth=10%                            --增量,可以用%或者xMB,但是不能超过最大上线
    ),
    (
        name=school_secondary_first,
        filename='d:\school_secondary_first.ndf',--次要数据文件的路径及名字
        size=3MB,
        maxsize=500MB,
        filegrowth=10MB
    ),
    filegroup school_two                        --一个新的文件组
    (
        name=school_secondary_second,
        filename='d:\school_secondary_second.ndf',--次要数据文件的路径及名字
        size=3MB,
        maxsize=500MB,
        filegrowth=10MB
    )
log on
    (
        name=school_log,
        filename='d:\school_log.ldf',
        size=3MB,
        maxsize=300MB,
        filegrowth=1MB
    )
go

     2.查看数据库文件属性

     如果我想找到具体的数据库文件去哪里找呢?有个方法,调用系统存储过程 exec sp_helpdb 数据库名

 

exec sp_helpdb school

View Code

     3.数据库文件和文件组

     从上面创建的数据库实例中我们可以知道,一个数据库的文件至少有一个数据库主文件和一个事务日志文件,当然也可能是多个。那既然可以是好多个文件,不会是没有上线吧?

     其实,最多可以为每个数据库指定32767个文件和32767个文件组。

     这里我们通过执行系统存储过程来查看数据库信息

    

SQL server2008创建数据库 sql2008怎么创建数据库_数据库

     从上图可以看到新建的School数据库文件,发现多增加的数据文件名字后缀是.ndf,而且全部的文件并不是在同一个文件组里,这里引申出来两个名次“数据库文件的类型”和“文件组” 。

     a.数据库文件类型,包含三中文件类型,分别是主要数据文件、次要数据文件、事务日志

  • 主要数据文件    包含数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件,扩展名是.mdf。
  • 次要数据文件    次要数据文件是可选的,由用户定义并存储用户数据。通过将每个文件存放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上。另外,如果数据库超过了单个Windows文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长,其扩展名是.ndf。
  • 事务日志         事务日志

     b.文件组

     每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。

     另外,如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配到默认文件组(PRIMARY)。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。

     接下来,我们为School新增一个文件组,然后向这个文件组中添加一个次要数据文件。

SQL server2008创建数据库 sql2008怎么创建数据库_数据_02

use school
go

--向数据库添加新文件组
alter database school add filegroup school_third
go

--向数据库中增加新文件
alter database school add file
(
    name=school_secondary_third,
    filename='e:\school_secondary_third.ndf',
    size=3MB,
    maxsize=100MB,
    filegrowth=10MB
)
    to filegroup school_third                    --指定该文件所在的文件组
go

     c.删除数据库文件

     例如要删除School中school_third文件组里的school_secondary_third.ndf次要数据文件。

SQL server2008创建数据库 sql2008怎么创建数据库_数据_02

use school
go

alter database school remove file school_secondary_third   --注意哦,file后面跟的是文件的逻辑名称,不是文件名称
go

     d.管理文件组

     上面提到的每个数据库都有一个默认的PRIMARY文件组,这个组是不可被删除的。

     那么默认文件组和自定义文件组之间有什么区别呢?

  • 默认文件组最大的好处是新创建文件只要不指定文件组,那么文件都放在默认组中。另外,系统表等信息总是放在PRIMARY文件组中,即使它不再是默认文件组。

     怎样将新增的文件组设置为默认文件组呢?按下面的步骤

  1. 新增一个文件组,语法是:alter database 数据库名 add filegroup 文件组名
  2. 向新建的文件组里新增一个数据文件,具体见上面(如果不为新增的文件组添加文件,第三步执行出错)
  3. 将新增的文件组设为默认组,语法是:alter database 数据库名 modify filegroup 文件组名 default

    修改文件组名