1、文件与文件组
在SQL Server 中数据库是由数据库文件和事务日志文件组成的。一个数据库至少应包含一个数据库文件和一个事物日志文件。
(1) 数据库文件(Database File)
数据库文件是存放数据库数据和数据库对象的文件。一个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据库。当有多个数据库文件时,有一个文件被定义为主数据库文件(Primary Database File), 扩展名为mdf, 它用来存储数据库的启动信息和部分或全部数据,一个数据库只能有一个主数据库文件。其它数据库文件被称为次数据库文件(Secondary Database File), 扩展名为ndf, 用来存储主文件没存储的其它数据。
采用多个数据库文件来存储数据的优点体现在:
·数据库文件可以不断扩充,而不受操作系统文件大小的限制;
·可以将数据库文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高了数据处理的效率。对于服务器型的计算机尤为有用。
(2) 事务日志文件(Transaction Log File)
事务日志文件是用来记录数据库更新情况的文件,扩展名为ldf。例如使用INSERT、UPDATE、 DELETE、 等对数据库进行更的操作都会记录在此文件中,而如SELECT 等对数据库内容不会有影响的操作则不会记录在案。一个数据库可以有一个或多个事务日志文件。
SQL Server 中采用“Write-Ahead (提前写)”方式的事务,即对数据库的修改先写入事务日志中,再写入数据库。其具体操作是,系统先将更改操作写入事务日志中,再更改存储在计算机缓存中的数据,为了提高执行效率,此更改不会立即写到硬盘中的数据库,而是由系统以固定4 的时间间隔执行CHECKPOINT 命令,将更改过的数据批量写入硬盘。SQL Server 有个特点,它在执行数据更改时会设置一个开始点和一个结束点,如果尚未到达结束点就因某种原因使操作中断,则在SQL Server 重新启动时会自动恢复已修改的数据,使其返回未被修改的状态。 由此可见,当数据库破坏时,可以用事务日志恢复数据库内容。
(3) 文件组(File Group)
文件组是将多个数据库文件集合起来形成的一个整体。每个文件组有一个组名。与数据库文件一样,文件组也分为主文件组(Primary File Group) 和次文件组(Secondary FileGroup) 一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用。主文件组中包含了所有的系统表。当建立数据库时,主文件组包括主数据库文件和未指定组的其它文件。在次文件组中可以指定一个缺省文件组,那么在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。如果没有指定缺省文件组则主文件组,为缺省文件组。
注意:事务日志文件不属于任何文件组。
6.1.2 用Enterprise Manager 创建数据库
在Enterprise Manager 中可以按下列步骤来创建数据库:
(1) 单击工具栏中的图标,或在服务器的Databases 文件夹或其下属数据库图标上单击右键,选择New Database…选项,即会出现如图6-1 所示的对话框。
(2) 指定数据库的名称和编码方式,如图6-1 所示。
图6-1 创建数据库对话框
(3) 点击Transaction Log 页框,指定数据库文件的名称、存储位置、初始容量大小和所属文件组,如图6-2 所示。
(4) 进行数据库文件大小扩充方式和容量限制设置,如图6-2 所示。
(5) 点击Transaction Log 页框,指定事务日志文件的名称、存储位置和初始容量大小,如图6-3 所示。
(6) 进行事务日志文件大小扩充方式和容量限制设置,如图6-3 所示。
(7) 单击“确定”按钮,则建新数据库。
注意:数据库的名称最长为128个字符,且不区分大小写。
注意:在此指定的文件容量以MB为单们的,数据库文件的最小容量为1MB,最大容量为1,048,516TB(这么大的硬盘还没出世!);事务日志文件的最小容量为1MB。
一个服务器在理论上可以管理32,767数据库。
例6-1: 创建一个与上节中用Enterprise Manager 创建的数据库类似的数据库。
create database mydb
on primary
( name = mydb_data1,
filename = 'd:\sql data\mydb_data1.mdf',
size = 1,
maxsize = unlimited,
filegrowth = 10% ),
filegroup data2
( name = mydb_data2,
filename = 'd:\sql data\mydb_data2.ndf',
size = 2,
maxsize = 100,
filegrowth = 1 ),
filegroup data3
( name = mydb_data3,
filename = 'd:\sql data\mydb_data3.ndf',
size = 3,
maxsize = 50,
filegrowth = 500kb )
log on
( name = 'mydb_log1',
filename = 'd:\sql data\mydb_log1.ldf',
size = 1mb,
maxsize = 25mb,
filegrowth = 10% ),
( name = 'mydb_log2',
filename = 'd:\sql data\mydb_log2.ldf',
size = 1mb,
maxsize = 10mb,
filegrowth = 10% ),
( name = 'mydb_log3',
filename = 'd:\sql data\mydb_log3.ldf',
size = 1mb,
maxsize = 5mb,
filegrowth = 512kb )
运行结果如下
-------------------- --------------------
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Data1'.
The CREATE DATABASE process is allocating 2.00 MB on disk 'mydb_Data2'.
The CREATE DATABASE process is allocating 3.00 MB on disk 'mydb_Data3'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log1'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log2'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log3'.
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |