本文介绍如何在 CentOS Linux 上创建的 SQL 数据库中管理数据文件和文件组。在我之前的文章管理 SQL 数据库的文件组中,我们了解了 Windows 上 SQL Server 2019 中不同类型的文件组和数据文件,以及如何使用 T-SQL 查询来管理它们。在本文中,我们将学习如何在 CentOS 上的 SQL Server 2019 中管理文件组。
我将在文章中介绍以下主题:
- 创建一个辅助文件组并在其中添加一个数据文件
- 将辅助文件组设为 SQL 数据库的默认文件组
我们将使用 SQL Server Management Studio 来管理文件组。我在我的工作站上创建了一个虚拟机,并在虚拟机中安装了 CentOS Linux。另外,在 CentOS 中配置了 SQL Server 2019。您可以阅读在 CentOS 中管理 SQL 数据库:在 CentOS 上安装 SQL Server 一文,了解 SQL Server 2019 在 CentOS 上的安装过程。我已经在 SQL Server 中恢复了 Stackoverflow2010 数据库的备份。
SQL Server 2019 安装在 CentOS 上。虚拟机不是windows活动目录的一部分;因此,我使用 IP 地址来连接它。我们正在使用 SQL Server 身份验证连接到数据库引擎。打开 SQL Server 管理工作室并在“连接到服务器”对话框中 指定以下值。
- 服务器类型:数据库引擎
- 服务器名称: IP 地址 (192.168.1.47)
- 身份验证: SQL Server 身份验证
- 登录: sa
- 密码:指定sa用户 的相应密码
截屏

运行以下查询以填充 stackoverflow2010 数据库的数据库文件列表。
USE stackoverflow2010
go
SELECT @@VERSION [SQL Server version],
Db_name() [Database Name],
df.NAME AS [Logical Name],
df.size / 128 AS [File Size],
df.physical_name AS [Physical Path]
FROM sys.database_files AS df
查询输出

现在,让我们了解如何创建新文件组并向其中添加数据文件。
创建辅助文件组和数据文件
为了演示,我们将添加一个名为FG_Stackoverflow2010_Users的辅助文件组,并在/SQLDatabase/Stackoverflow2010位置 添加一个数据文件。
要添加辅助文件组,请展开Databases 🡪 右键单击 Stackoverflow2010 🡪 选择Properties。

在 Database Properties 对话框中,单击Filegroups 🡪 单击 Add Filegroup按钮。将在文件组网格视图中添加一行。在列中指定以下值
- 名称:FG_Stackoverflow2010_Users。
- 只读:如果要使文件组为只读,请勾选此选项。在我们的例子中,文件组是读写的,所以我们没有做任何改变。
- 默认值:如果要将文件组设为只读,请勾选此选项。在我们的例子中,文件组是读写的,所以我们没有做任何改变。
文件组屏幕如下图所示:

添加辅助文件组后,我们必须在辅助文件组中添加一个数据文件。在这个演示中,我们在 FG_Stackoverflow2010_Users 文件组中添加了一个名为DF_Stackoverflow2010_Users的数据文件。要添加数据文件,请单击文件 🡪 单击添加。将在数据库文件网格视图中添加一行。指定以下值。
- 逻辑名称:指定辅助数据文件的逻辑名称。在本演示中,数据文件名为DF_Stackoverflow2010_Users。
- Filetype:指定数据文件的类型。在此演示中,数据文件类型为 ROWS DATA。
- 文件组:指定文件组的名称。在此演示中,文件组名称为FG_Stackoverflow2010_Users。
- Autogrowth / max size:启用Autogrowth,Autogrowth的值为64 MB,最大允许增长是无限的。
- 路径:指定辅助数据文件的物理路径。在这个demo中,物理路径是/SQLDatabase/Stackoverflow2010
- 文件名:指定文件名。在我们的例子中,文件名为DF_Stackoverflow2010_Users.ndf。
文件组屏幕如下图所示:

单击确定以创建辅助文件组和数据文件。运行以下查询以查看stackoverflow2010数据库的文件组。
USE stackoverflow2010
go
SELECT [database file].NAME AS [DB File Name],
[database file].size / 128 AS [File Size (MB)],
[filegroup].NAME AS [File Group Name],
[database file].physical_name AS [File Path]
FROM sys.database_files AS [database file]
INNER JOIN sys.filegroups AS [filegroup]
ON [database file].data_space_id = [filegroup].data_space_id;
查询输出

如您所见,已经创建了FG_Stackoverflow2010_Users和DF_Stackoverflow2010_Users 。现在让我们了解如何使 FG_Stackoverflow2010_users 成为默认文件组。
将辅助文件组设为默认文件组
我们要确保必须在FG_Stackoverflow2010_Users文件组中创建新表。我们可以在CREATE TABLE语句中明确指定文件组名称。另一种方法是将FG_Stackoverflow2010_Users文件组作为 SQL 数据库的默认文件组。为此,请打开Database Properties🡪 单击Filegroups 🡪 勾选Default,然后单击OK。

现在,让我们在 stackoverflow2010 数据库中创建一个名为 tblUsers 的表。该表必须在FG_Stackoverflow2010_Users文件组中创建。运行以下查询以创建表。
USE [StackOverflow2010]
go
CREATE TABLE [dbo].[tblusers]
(
[id] [INT] IDENTITY(1, 1) NOT NULL,
[aboutme] [NVARCHAR](max) NULL,
[age] [INT] NULL,
[creationdate] [DATETIME] NOT NULL,
[displayname] [NVARCHAR](40) NOT NULL,
[lastaccessdate] [DATETIME] NOT NULL,
[location] [NVARCHAR](100) NULL,
[views] [INT] NOT NULL,
[accountid] [INT] NULL,
CONSTRAINT [PK_tblUsers_Id] PRIMARY KEY CLUSTERED ( [id] ASC )
)
您可以通过执行以下查询 来查看在FG_Stackoverflow2010_Users文件组中创建的表的列表。
USE [StackOverflow2010]
go
SELECT [objects].[name] AS [Table Name],
[filegroup].[name] AS [Filegroup Name]
FROM sys.indexes [indexes]
INNER JOIN sys. filegroups [filegroup]
ON [indexes].data_space_id = [filegroup].data_space_id
INNER JOIN sys.all_objects [objects]
ON [indexes].[object_id] = [objects].[object_id]
WHERE [indexes].data_space_id = [filegroup].data_space_id
AND [objects].type = 'U'
查询输出

如您所见,tblUsers是在FG_Stackoverflow2010_Users文件组中创建的。
总结
在本文中,我们学习了如何使用 SQL Server management studio 在 CentOS 上的 SQL Server 2019 中管理 SQL 数据库的文件组。我已经讨论了以下主题:
- 创建一个辅助文件组并在其中添加一个数据文件。
- 将辅助文件组作为 SQL 数据库的默认文件组。
在我的下一篇文章中,我们将学习如何在 CentOS 上的 SQL Server 2019 中配置 SQL Server 代理作业。敬请关注!
原文标题:Manage SQL Databases in CentOS: Manage filegroups of user databases
原文作者:Nisarg Upadhyay
原文地址:https://www.sqlshack.com/manage-sql-databases-in-centos-manage-filegroups-of-user-databases/




