博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 2008 —— 创建和维护数据库
阅读量:5166 次
发布时间:2019-06-13

本文共 2597 字,大约阅读时间需要 8 分钟。

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

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

    

ExpandedBlockStart.gif
--
判断数据库是否存在
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
View Code

     2.查看数据库文件属性

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

    

ExpandedBlockStart.gif
exec
 sp_helpdb school
View Code

     3.数据库文件和文件组

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

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

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

    

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

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

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

     b.文件组

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

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

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

ExpandedBlockStart.gif
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
View Code

     c.删除数据库文件

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

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

     d.管理文件组

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

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

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

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

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

转载于:https://www.cnblogs.com/canyue/p/3163362.html

你可能感兴趣的文章
[转]tesseract api C++使用例子
查看>>
eaby技术架构变迁
查看>>
GDSOI2019退役祭
查看>>
PHP 6新增多项特性及改进
查看>>
有什么springMVC+myBatis的书?
查看>>
Ajax教程(转载)
查看>>
笔记:深入理解JVM 第5章 调优案例分析与实战
查看>>
笔记:常用排序算法
查看>>
Servlet+JSP 对外访问路径配置
查看>>
2007年6月份最新《The Architecture Journal》内容摘要翻译
查看>>
hdu 5233 Gunner II (stl vector map)
查看>>
C语言退出多层嵌套循环技巧
查看>>
【Docker】常用命令
查看>>
spring整合struts2
查看>>
三种预处理器px2rem
查看>>
Metrics.NET step by step
查看>>
[Hadoop]如何安装Hadoop
查看>>
[luogu1328]生活大爆炸版石头剪刀布
查看>>
XUtils3框架的初始体验(一)
查看>>
解决Java POI 导出Excel时文件名中文乱码,兼容浏览器
查看>>