Sql server 文件组和文件

1,文件组和文件的作用

Sql Server的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象,Sql server通过文件组来管理文件。

一个DataBase有一个或多个FileGroup,PrimaryFileGroup是必需的,用户可以根据需要添加FileGroup。每一个FileGroup管理一个或多个文件,其中PrimaryFileGroup管理一个master data file,扩展名是.mdf,这个file是系统默认生成的;扩展名是.ndf的文件是用户根据需要添加的。

文件组管理着磁盘上的文件,文件中存放着SQL SERVER database的实际数据。

2,示例db

2.1示例db的FileGroup如下

Primary 是一个FileGroup,是个默认的文件组。如果在create table,create index中没有指定FileGroup,将使用Default FileGroup管理的文件来存储实际的数据。

2,每一个FileGroup都有相应的File,File是实际存储数据的物理实体。

File有两种类型,一种是存储数据的rows data,一种是存储日志的log。可以从path中找到磁盘上物理file。

File中存储的数据经过sql server的处理,存储的是sql server能够识别的格式化数据。

3,使用文件组管理文件的好处

在实际的开发过程中,user只需要关注逻辑对象FileGroup,而不用关心数据的物理存储,即使物理存储的file变更,也不影响应用程序。如果同一个FileGroup内的文件分布在不同的磁盘上,在读取数据时,Sql Server能同时从不同的磁盘上读取数据,极大的提高IO性能,这种实现方式是分区表实现的基础,分区表能够将不同的数据子集存储在不同的磁盘上。

Tsql 查看database的filegroup和file

select *
FROM sys.database_files

select *
from sys.filegroups

4,使用文件组的情况

4.1 在创建表的时候,使用on子句指定FileGroup,那么该表的数据将存储在该FileGroup管理的File中。

CREATE TABLE [dbo].[student](
    [stuid] [int] NOT NULL,
    [stuname] [varchar](100) NOT NULL,
    [professionid] [int] NULL,PRIMARY KEY CLUSTERED
    (
        [stuid] ASC
    )
) ON [PRIMARY]

4.2 在创建索引的时候,使用on子句指定FileGroup,那么该表的索引结构将存储在该FileGroup管理的File中。

CREATE NONCLUSTERED INDEX [idx_student_stuname]
ON [dbo].[student]( [stuname] ASC )
ON [PRIMARY]
时间: 2024-12-30 00:02:03

Sql server 文件组和文件的相关文章

关于SQL Server中分区表的文件与文件组的删除(转)

在SQL Server中对表进行分区管理时,必定涉及到文件与文件组,关于文件与文件组如何创建在网上资料很多,我博客里也有两篇相关转载文件,可以看看,我这就不再细述,这里主要讲几个一般网上很少讲到的东西,但有时候却很重要. 前面内容主要摘自SQL的联机帮助: 1.一个文件或文件组不能由多个数据库使用.例如,任何其他数据库都不能使用包含 sales 数据库中的数据和对象的文件 sales.mdf 和 sales.ndf. 2.一个文件只能是一个文件组的成员. 3.一个文件组可以包含多个文件,一个数据

SQL Server 的文件组和文件

1.默认情况 一般创建数据库后,有两个文件,后缀分别为 .mdf(主要文件) 和 .ldf(日志文件) 默认只有一个文件组 2.添加文件组,文件组是用来放文件的(用户可以添加文件 后缀默认为 .ndf的文件) 3.添加文件 4.为什么用文件组 对于用户角度来说,需对创建的对象指定存储的文件组只有三种数据对象:表,索引和大对象(LOB) 使用文件组可以隔离用户和文件,使得用户针对文件组来建立表和索引,而不是实际磁盘中的文件.当文件移动或修改时,由于用户建立的表和索引是建立在文件组上的,并不依赖具体

SQL SERVER删除文件组和文件

文件与文件组的删除,如果因为以前的分区方案不合理,需要取消分区,或者按另外一种方式分区,就需要涉及到文件与文件组的删除操作,如果没有掌握正确步骤,有时候可能无法删除,会提示你“文件不为空,无法删除”或者“文件组不为空,不能删除”等等,如果不知道技巧,会很郁闷!本人就曾经经历过这样的郁闷!在百度也没找到正确答案.    1. 文件的删除:首先要先清空文件里的数据,删除之前数据一定要记得先备份,可将数据复制到其他表,然后执行: DBCC SHRINKFILE (FileName, EMPTYFILE

sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]

SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复.本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器) 1.正常的备份.恢复方式 正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断

sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件组 总结: (1)如果是一个文件组内只有一个文件 ~~把所有在该文件组内的表删除聚集索引,然后新建聚集索引至新的文件组 (2)如果是一个文件组内多个文件 [1]把某个文件清空转移到其他文件:使用DBCC SHRINKFILE(要移动数据的数据文件逻辑名称,EMPTYFILE) [2]把该文件组内所有

SQL Server - 文件组,文件,备份,分区

FileGroup:文件组,为逻辑划分:Files:文件,为实际文件,需要指定文件属于哪个文件组. 使用多个文件的有点:可以将磁盘I/O压力分散,提供按文件和文件组(按文件和文件组进行备份需要设置数据的恢复模式为Full)进行备份. --创建文件组 USE [master] GO ALTER DATABASE [DWH_Optimizing] ADD FILEGROUP [DWH_Optimizing_1] GO ALTER DATABASE [DWH_Optimizing] ADD FILEG

Sql Server 附加没有日志文件的数据库(.mdf)文件方法

附加数据库,附加的时候会提醒找不到log文件 针对以上现象有两个写法的语句能解决: 写法一: USE MASTER; EXEC sp_detach_db @dbname = 'TestDB'; EXEC sp_attach_single_file_db @dbname = 'TestDB', @physname = 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB.mdf' 写法二: CREAT

SQL Server ->> Sparse File(稀疏文件)

Sparse File(稀疏文件)不是SQL Server的特性.它属于Windows的NTFS文件系统的一个特性.如果某个大文件中的数据包含着大量“0数据”(这个应该从二进制上看),这样的文件就可以被称之为稀疏文件.如果从二维图上看这个文件你会发现文件就像很多很多洞一样,这就是“稀疏”的由来.这种文件造成的问题是空间浪费.比如说如果你现在用VMWare Workstatation创建了一个虚拟机,初始化磁盘大小为40G,VM必然会为虚拟机生成一个或者多个.vmdk文件.如果文件系统真的分配40

如何获取SQL Server 2008数据库数据文件的位置

在SQL Server中,要获取数据库数据文件的物理位置,有三种方法: sp_helpdb bright name          filename                        filegroup         size ------------- ------------------------------- ---------- ----------- Bright        Z:\MSSQL\data\Bright.mdf        PRIMARY    10