如何:添加文件和文件组

如何:添加文件和文件组,第1张

更新:2007 年 11 月每个数据库都有一个至少定义了一个文件的默认文件组。您可以为数据库项目定义其他文件组和文件。在定义了文件组之后,可以针对该文件组创建对象或者修改现有对象,使这些对象驻留在该文件组中。可以将文件组及其相关文件配置为数据库项目属性的一部分。如果您从数据库项目中删除某个文件组,则可以将所做的更改部署到新数据库中,但是,如果要部署到现有的数据库中,则所做的更改将被忽略。有关删除文件组、文件和日志文件的更多信息,请参见文件和文件组概述。添加文件组在“解决方案资源管理器”中,单击要向其中添加文件组的数据库项目。在“项目”菜单上单击“项目名称 属性”。将出现“属性”窗口。单击“文件组”选项卡。在文件组列表中右击“文件组”节点,再单击“添加新文件组”。该文件组将添加到数据库项目中,文件组列表中将出现一个新项,“错误列表”窗口中将出现一则警告。之所以会出现此错误,是因为您必须至少向文件组中添加一个文件才能使用该文件组。您可以修改新文件组的名称。在“文件”菜单上单击“全部保存”。在生成和部署数据库项目时,将会在要更新的数据库中新建所有的文件和文件组。添加日志文件或者向文件组中添加文件在“解决方案资源管理器”中,单击要向其中的文件组中添加文件的数据库项目。在“项目”菜单上单击“项目名称 属性”。将出现“属性”窗口。单击“文件组”选项卡。执行下列 *** 作之一:若要向某个文件组中添加文件,请右击要向其中添加文件的文件组,再单击“添加新文件”。若要添加日志文件,请右击“日志文件”节点,再单击“添加新文件”。将在文件组列表中添加一个新项,该项的默认名称为“FileName”。键入新文件的逻辑名称。在详细信息窗格中的“物理文件路径和名称”中,键入要添加的文件的路径和名称。说明:可以对路径使用 MSBuild 变量,方法是单击“编辑”,然后在列表中单击所需的变量。例如,可以指定 $(DefaultDataPath)$(TargetDatabase).mdf,这是 PRIMARY 文件组中文件的默认值。然后可以在命令提示符处重写 MSBuild 变量的值。有关如何重写这样的值的示例,请参见数据库生成和部署概述的“命令行语法”一节。还可以更新 .dbproj 文件,以便为每个生成配置添加 MSBuild 变量的值。有关更多信息,请参见 MSBuild 属性。在“初始文件大小”中,执行下列 *** 作之一:单击“使用目标服务器的默认大小”。单击“指定大小 (MB)”,键入一个具体的兆字节数。在“文件自动增长”中,执行下列 *** 作之一:若要防止文件增长到大于上一步中指定的大小,请单击“指定自动增长”,清除“启用自动增长”复选框,然后转至该过程中的最后一步。若要允许文件增长到大于上一步中指定的大小,要么单击“使用目标服务器的默认自动增长”,要么单击“指定自动增长”,然后选中“启用自动增长”复选框。(可选)如果在上一步中选中了“启用自动增长”复选框,请执行下面的一项或两项 *** 作: 单击“以百分比表示”或“以 MB 表示”,以便允许文件按当前文件大小的一定百分比或者按某个兆字节数递增。然后键入作为文件递增依据的百分比或者兆字节数。单击“受限制的文件增长”或者“无限制的文件增长”,以便指定文件是否应当保持在小于某个大小。如果您单击的是“受限制的文件增长”,请键入最大文件大小(以 MB 表示)。在“文件”菜单上单击“全部保存”。

SQL

Server中一个数据库可以对应多个物理文件,其中有一个的主数据库文件,扩展名为MDF,其他为次数据库文件,扩展名为NDF。可以将不同的文件存放在不同的驱动器上,可以提高数据访问速度。

文件组是逻辑概念,主要目的是将文件分组管理。

create

database

db3

on

primary

--主文件组

(name='db3_dat1',

--数据库主文件

filename='d:\db3_dat1.mdf',

size=10mb,

maxsize=100mb,

filegrowth=10%

),

(name='db2_dat2',

--主文件组,是次数据库文件

filename='d:\db2_dat2.ndf',

size=10mb,

maxsize=100mb,

filegrowth=10%

),

filegroup

db3g1

--第2个文件组

(name='db3_dat3',

--第2个文件组中的次数据库

filename='d:\db2_dat3.ndf',

size=10mb,

maxsize=30mb,

filegrowth=5mb

),

(name='db3_dat4',

--第2个文件组中的次数据库

filename='d:\db2_dat4.ndf',

size=5mb,

maxsize=30mb,

filegrowth=5mb

),

filegroup

db3g2

--第三个文件组

(name='db3_dat5',

----第三个文件组中的次数据库

filename='d:\db2_dat5.ndf',

size=10mb,

maxsize=50mb,

filegrowth=20%

)

log

on

(name='db3_log',

--日志文件

filename='d:\db3_log.ldf',

size=20mb,

maxsize=100mb,

filegrowth=10mb

)

--这个在mssql2008+,可以创建表分区,不用创建100多个表

--你在增删改查 *** 作的时候跟单个表是一样的

--但是你的数据 *** 作有明显的分段的话,效率会大大提高

--以下从创建文件,创建分区表,到查询删除等

--谢谢

--1.创建文件组

ALTER DATABASE TEST

    ADD FILEGROUP  FILEGROUP1

ALTER DATABASE TEST

    ADD FILEGROUP  FILEGROUP2    

ALTER DATABASE TEST

    ADD FILEGROUP  FILEGROUP3      

--2.添加文件

ALTER DATABASE TEST

ADD FILE (

NAME = N'FILE1',

FILENAME = N'E:\ERP\FILE1.NDF' ,

SIZE = 3072KB ,

FILEGROWTH = 1024KB

)

TO FILEGROUP FILEGROUP1

 

 ALTER DATABASE TEST

ADD FILE (

NAME = N'FILE2' ,

FILENAME = N'E:\ERP\FILE2.NDF' ,

SIZE = 3072KB ,

FILEGROWTH = 1024KB

)

TO FILEGROUP FILEGROUP2

ALTER DATABASE TEST

ADD FILE (

NAME = N'FILE3' ,

FILENAME = N'E:\ERP\FILE3.NDF' ,

SIZE = 3072KB ,

FILEGROWTH = 1024KB

)

TO FILEGROUP FILEGROUP3

--3.1创建分区函数

CREATE PARTITION FUNCTION FNPARTITION(INT)

AS RANGE RIGHT

FOR VALUES(333333333,666666666)

--4.1创建分区方案

CREATE PARTITION SCHEME SCHEMAFORPARIRION

AS PARTITION FNPARTITION  

TO(FILEGROUP1,[PRIMARY],FILEGROUP2)

--4.2 添加文件组

ALTER PARTITION SCHEME SCHEMAFORPARIRION

NEXT USED FILEGROUP3

--3.2拆分分区

ALTER PARTITION FUNCTION FNPARTITION ()

SPLIT RANGE (500)

--3.3合并分区

ALTER PARTITION FUNCTION FNPARTITION ()

MERGE RANGE (500)

--5.1新建分区表

CREATE TABLE ORDERRECORDS

(

ID INT

)

ON SCHEMAFORPARIRION(ID)

DROP TABLE ORDERRECORDS

--5.2普通表变为分区表

--如果原来就主键,先删除

ALTER TABLE ORDERRECORDS DROP CONSTRAINT PK_SALE  

ALTER TABLE ORDERRECORDS ADD CONSTRAINT PK_SALE PRIMARY KEY  

(  

    ID ASC  

) ON SCHEMAFORPARIRION(ID)

--或者创建聚集索引,如果原来有主键,要先改成非聚集索引

ALTER TABLE ORDERRECORDS DROP CONSTRAINT PK_SALE  

--创建主键,但不设为聚集索引  

ALTER TABLE ORDERRECORDS ADD CONSTRAINT PK_SALE PRIMARY KEY NONCLUSTERED  

(  

    ID ASC  

) ON [PRIMARY]  

CREATE CLUSTERED INDEX CT_SALE ON ORDERRECORDS(ID)  

ON PARTSCHSALE(ID)  

--5.3分区表变为普通表

ALTER TABLE ORDERRECORDS DROP CONSTRAINT PK_SALE  

ALTER TABLE ORDERRECORDS ADD CONSTRAINT PK_SALE PRIMARY KEY  

(  

    ID ASC  

) ON [PRIMARY]

--或者删除

DROP INDEX CT_SALE ON ORDERRECORDS

--6删除分区方案

DROP PARTITION SCHEME SCHEMAFORPARIRION

--7删除分区函数

DROP PARTITION FUNCTION FNPARTITION

--8.删除文件

ALTER DATABASE TEST  REMOVE FILE FILE1

ALTER DATABASE TEST  REMOVE FILE FILE2

ALTER DATABASE TEST  REMOVE FILE FILE3

--9.删除文件组

ALTER DATABASE TEST REMOVE FILEGROUP FILEGROUP1

ALTER DATABASE TEST REMOVE FILEGROUP FILEGROUP2

ALTER DATABASE TEST REMOVE FILEGROUP FILEGROUP3

--10查看分区函数

SELECT * FROM SYS.PARTITION_FUNCTIONS

SELECT * FROM SYS.PARTITION_RANGE_VALUES

SELECT * FROM SYS.PARTITION_SCHEMES

 --11.查看每个分区的数据

 SELECT * FROM  ORDERRECORDS WHERE $PARTITION.FNPARTITION(ID)=4

--12.查看分区对应的文件

 SELECT FG.NAME

    FROM SYS.DESTINATION_DATA_SPACES SP

    INNER JOIN SYS.PARTITION_SCHEMES SCM ON SP.PARTITION_SCHEME_ID = SCM.DATA_SPACE_ID

    INNER JOIN SYS.FILEGROUPS FG ON FG.DATA_SPACE_ID = SP.DATA_SPACE_ID

    WHERE SCM.NAME='SCHEMAFORPARIRION' AND SP.DESTINATION_ID=4


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8006792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存