暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在 CentOS 中管理 SQL 数据库:管理用户数据库的文件组

原创 Bigbig 2022-10-09
560

本文介绍如何在 CentOS Linux 上创建的 SQL 数据库中管理数据文件和文件组。在我之前的文章管理 SQL 数据库的文件组中,我们了解了 Windows 上 SQL Server 2019 中不同类型的文件组和数据文件,以及如何使用 T-SQL 查询来管理它们。在本文中,我们将学习如何在 CentOS 上的 SQL Server 2019 中管理文件组。

我将在文章中介绍以下主题:

  1. 创建一个辅助文件组并在其中添加一个数据文件
  2. 将辅助文件组设为 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 管理工作室并在“连接到服务器”对话框中 指定以下值。

  1. 服务器类型:数据库引擎
  2. 服务器名称: IP 地址 (192.168.1.47)
  3. 身份验证: SQL Server 身份验证
  4. 登录: sa
  5. 密码:指定sa用户 的相应密码

截屏
image.png

运行以下查询以填充 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 

查询输出
image.png

现在,让我们了解如何创建新文件组并向其中添加数据文件。

创建辅助文件组和数据文件

为了演示,我们将添加一个名为FG_Stackoverflow2010_Users的辅助文件组,并在/SQLDatabase/Stackoverflow2010位置 添加一个数据文件。

要添加辅助文件组,请展开Databases 🡪 右键单击​​ Stackoverflow2010 🡪 选择Properties。

image.png

在 Database Properties 对话框中,单击Filegroups 🡪 单击 Add Filegroup按钮。将在文件组网格视图中添加一行。在列中指定以下值

  1. 名称:FG_Stackoverflow2010_Users。
  2. 只读:如果要使文件组为只读,请勾选此选项。在我们的例子中,文件组是读写的,所以我们没有做任何改变。
  3. 默认值:如果要将文件组设为只读,请勾选此选项。在我们的例子中,文件组是读写的,所以我们没有做任何改变。

文件组屏幕如下图所示:

image.png

添加辅助文件组后,我们必须在辅助文件组中添加一个数据文件。在这个演示中,我们在 FG_Stackoverflow2010_Users 文件组中添加了一个名为DF_Stackoverflow2010_Users的数据文件。要添加数据文件,请单击文件 🡪 单击添加。将在数据库文件网格视图中添加一行。指定以下值。

  1. 逻辑名称:指定辅助数据文件的逻辑名称。在本演示中,数据文件名为DF_Stackoverflow2010_Users。
  2. Filetype:指定数据文件的类型。在此演示中,数据文件类型为 ROWS DATA。
  3. 文件组:指定文件组的名称。在此演示中,文件组名称为FG_Stackoverflow2010_Users。
  4. Autogrowth / max size:启用Autogrowth,Autogrowth的值为64 MB,最大允许增长是无限的。
  5. 路径:指定辅助数据文件的物理路径。在这个demo中,物理路径是/SQLDatabase/Stackoverflow2010
  6. 文件名:指定文件名。在我们的例子中,文件名为DF_Stackoverflow2010_Users.ndf。

文件组屏幕如下图所示:
image.png

单击确定以创建辅助文件组和数据文件。运行以下查询以查看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; 

查询输出

image.png

如您所见,已经创建了FG_Stackoverflow2010_Users和DF_Stackoverflow2010_Users 。现在让我们了解如何使 FG_Stackoverflow2010_users 成为默认文件组。

将辅助文件组设为默认文件组

我们要确保必须在FG_Stackoverflow2010_Users文件组中创建新表。我们可以在CREATE TABLE语句中明确指定文件组名称。另一种方法是将FG_Stackoverflow2010_Users文件组作为 SQL 数据库的默认文件组。为此,请打开Database Properties🡪 单击Filegroups 🡪 勾选Default,然后单击OK。

image.png

现在,让我们在 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'

查询输出

image.png

如您所见,tblUsers是在FG_Stackoverflow2010_Users文件组中创建的。

总结

在本文中,我们学习了如何使用 SQL Server management studio 在 CentOS 上的 SQL Server 2019 中管理 SQL 数据库的文件组。我已经讨论了以下主题:

  1. 创建一个辅助文件组并在其中添加一个数据文件。
  2. 将辅助文件组作为 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/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论