如何将文件组添加到 SQL Server 数据库 (T-SQL)

发布于

SQL Server 数据库至少有两个操作系统文件;数据文件和日志文件。

数据文件保存数据库中的实际数据,以及表、索引、存储过程和视图等对象。日志文件包含恢复数据库中的所有事务所需的信息。

使用默认选项创建数据库时,将创建这两个文件。这些文件在主文件组中创建。此文件组包含主数据文件和未放入其他文件组的任何辅助文件。因此,主文件组是默认文件组(除非使用该语句对其进行了更改)。ALTER DATABASE

创建多个数据文件时,还可以选择将它们分组到用户定义的文件组中。这允许您将文件逻辑分组到您创建的自己的文件组中。然后,除了主文件组之外,此文件组还将存在。数据库对象将保留在主文件组中。

本文演示如何创建用户定义的文件组并向其中添加一些数据文件。

示例

下面是使用 T-SQL 将文件组添加到现有数据库的示例:

USE master GO

ALTER DATABASE Solutions
ADD FILEGROUP Solutions1Filegroup1;
GO
ALTER DATABASE Solutions
ADD FILE
(
NAME = Solutions_dat_2,
FILENAME = ‘D:\mssql\data\Solutions_dat2.ndf’,
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 5%
),
(
NAME = Solutions_dat_3,
FILENAME = ‘D:\mssql\data\Solutions_dat3.ndf’,
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 5% )
TO FILEGROUP Solutions1Filegroup1;
GO

此示例创建一个名为 并向其中添加两个数据文件的文件组。我们为每个文件指定通常的内容,例如其逻辑名称、物理文件路径、大小等。Solutions1Filegroup1

此示例的假设是已经有一个名为 的数据文件。因此,我们将这些文件命名为相同,但只是增加每个文件的数量。Solutions_dat_1

此外,在此示例中,我们将文件组命名为好像它只是众多文件组之一。如果需要,我们可以创建多个文件组,如果这样做,我们可能需要一个命名约定,以便于区分每个文件组。

查看文件组

您可以通过查询目录视图来查看给定数据库的文件组。sys.filegroups

例:

USE Solutions; SELECT name, type_desc FROM sys.filegroups;

输出:

name                  type_desc     
--------------------  --------------
PRIMARY               ROWS_FILEGROUP
Solutions1Filegroup1  ROWS_FILEGROUP

如果需要,还可以使用星号 (*) 返回所有行。