分享
 
 
 

物理数据库文件和文件组

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Microsoft? SQL Server? 2000 将数据库映射到一组操作系统文件上。数据和日志信息绝不混合在同一个文件中,而且个别文件只由一个数据库使用。

SQL Server 2000 数据库有三种类型的文件:

主要数据文件

主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。

次要数据文件

次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。

日志文件

日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。

SQL Server 2000 不强制使用 .mdf、.ndf 和 .ldf 文件扩展名,但建议使用这些扩展名以帮助标识文件的用途。

在 SQL Server 2000 中,某个数据库中的所有文件的位置都记录在 master 数据库和该数据库的主文件中。大多数情况下,数据库引擎使用 master 数据库中的文件位置信息。不过对于某些操作,数据库引擎使用主文件中的文件位置信息初始化 master 数据库中的文件位置项:

当使用 sp_attach_db 系统存储过程附加数据库时。

当从 SQL Server 7.0 版升级到 SQL Server 2000 时。

当还原 master 数据库时。

SQL Server 2000 文件有两个名称:

logical_file_name 是在所有 Transact-SQL 语句中引用文件时所使用的名称。

逻辑文件名必须遵守 SQL Server 标识符规则,且对数据库必须是唯一的。

os_file_name 是物理文件名。

物理文件名必须遵从 Microsoft Windows NT? 或 Microsoft Windows? 98 和 Microsoft Windows 95 的文件名规则。

下面是在 SQL Server 2000 默认实例上创建的数据库的逻辑文件名和物理文件名示例:

SQL Server 数据和日志文件可以放置在 FAT 或 NTFS 文件系统中,但不能放在压缩文件系统中。

在 SQL Server 2000 中,数据文件的页按顺序编号,文件首页的页码是 0。每个文件都有一个文件 ID 号。在数据库中唯一标识一页需要同时使用文件 ID 和页码。下例显示包含 4-MB 主要数据文件和 1-MB 次要数据文件的数据库中的页码。

在每个文件中,第一页是包含文件特性信息的文件的页首页。在文件开始处的其它几页也包含系统信息(如分配映射表)。系统页存储在主要数据文件和第一个日志文件中,其中有一个是包含数据库属性信息的数据库引导页。

SQL Server 2000 文件可以从它们最初指定的大小自动增长。定义文件时可以指定增量。每次填充文件时,均按这个增量值增加它的大小。如果在文件组中有多个文件,这些文件在全部填满之前不自动增长。填满后,这些文件使用循环算法进行增长。

还可以指定每个文件的最大大小。如果没有指定最大大小,文件可以一直增长到用完磁盘上的所有可用空间。如果 SQL Server 作为数据库嵌入应用程序,而该应用程序的用户无法迅速与系统管理员联系,此功能在这种情况下特别有用。用户可以让文件按需要自动增长,以减轻监视数据库中的可用空间量和手工分配额外空间的管理负担。

如果有多个 SQL Server 实例在单个计算机上运行,则每个实例获得不同的默认目录来存储该实例中创建的数据库文件。

数据库文件组

出于分配和管理目的,可以将数据库文件分成不同的文件组。一些系统可以通过控制在特定磁盘驱动器上放置的数据和索引来提高自身的性能。文件组可以对此进程提供帮助。系统管理员可以为每个磁盘驱动器创建文件组,然后将特定的表、索引、或表中的 text、ntext 或 image 数据指派给特定的文件组。

没有一个文件可以是一个以上文件组的成员。表、索引、以及 text、ntext 和 image 数据可以与文件组相关联,在这种情况下,它们的所有页都将分配在那个文件组中。

日志文件不能作为文件组的一部分。日志空间与数据空间分开管理。

文件组中的文件不自动增长,除非文件组中的文件全都没有可用空间。

有两种类型的文件组:

主要文件组

主文件组包含主要数据文件和任何没有明确指派给其它文件组的其它文件。系统表的所有页均分配在主文件组中。

用户定义文件组

用户定义文件组是在 CREATE DATABASE 或 ALTER DATABASE 语句中,使用 FILEGROUP 关键字指定的文件组。

每个数据库中都有一个文件组作为默认文件组运行。当 SQL Server 给创建时没有为其指定文件组的表或索引分配页时,将从默认文件组中进行分配。一次只能有一个文件组作为默认文件组。db_owner 固定数据库角色成员可以将默认文件组从一个文件组切换到另一个。如果没有指定默认文件组,则主文件组是默认文件组。

SQL Server 2000 在没有文件组时也能有效地工作,因此许多系统不需要指定用户定义文件组。在这种情况下,所有文件都包含在主文件组中,而且 SQL Server 2000 可以在数据库内的任何位置分配数据。文件组不是在多个驱动器之间分配 I/O 的唯一方法。

db_owner 固定数据库角色成员可以备份和还原个别的文件或文件组,而不用备份或还原整个数据库。

下例在 SQL Server 2000 的默认实例上创建数据库。该数据库包括一个主要数据文件、一个用户定义的文件组和一个日志文件。主要数据文件在主文件组中,而用户定义文件组有两个次要数据文件。ALTER DATABASE 语句将用户定义文件组指定为默认文件组。之后,通过指定用户定义的文件组来创建表。

USE master

GO

-- Create the database with the default data

-- filegroup and the log file. Specify the

-- growth increment and the max size for the

-- primary data file.

CREATE DATABASE MyDB

ON PRIMARY

( NAME='MyDB_Primary',

FILE NAME=

'c:Program FilesMicrosoft SQL ServerMSSQLdataMyDB_Prm.mdf',

SIZE=4,

MAXSIZE=10,

FILEGROWTH=1),

FILEGROUP MyDB_FG1

( NAME = 'MyDB_FG1_Dat1',

FILE NAME =

'c:Program FilesMicrosoft SQL ServerMSSQLdataMyDB_FG1_1.ndf',

SIZE = 1MB,

MAXSIZE=10,

FILEGROWTH=1),

( NAME = 'MyDB_FG1_Dat2',

FILE NAME =

'c:Program FilesMicrosoft SQL ServerMSSQLdataMyDB_FG1_2.ndf',

SIZE = 1MB,

MAXSIZE=10,

FILEGROWTH=1)

LOG ON

( NAME='MyDB_log',

FILE NAME =

'c:Program FilesMicrosoft SQL ServerMSSQLdataMyDB.ldf',

SIZE=1,

MAXSIZE=10,

FILEGROWTH=1)

GO

ALTER DATABASE MyDB

MODIFY FILEGROUP MyDB_FG1 DEFAULT

GO

-- Create a table in the user-defined filegroup.

USE MyDB

CREATE TABLE MyTable

( cola

int

PRIMARY KEY,

colb

char(8) )

ON MyDB_FG1

GO

可以将用户文件组设成只读,数据不能更改,但可以修改目录以执行权限管理等工作。

SQL Server 2000 数据库可以从服务器中分离出来,然后重新连接到另一台服务器或原来的服务器上。这对制作要分发的、以便用于在客户的本地 SQL Server 安装上使用的数据库特别有用。例如,公司可以创建包含其当前产品目录的数据库。公司可以在可写的光盘驱动器上创建这个数据库,并将它设成只读。然后,他们可以复制这张光盘,给那些在 Windows 95 便携式电脑上安装了目录应用程序和 SQL Server 的地区销售代表发送复本。这样一来,销售代表就有了最新的产品目录信息。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有