sqlserver:文件和文件组

2023-11-09

环境:

  • window10 x64 专业版
  • sqlserver2014

参考:
官网:文件和文件组体系结构
sql server 里的文件和文件组使用
SQL Server中数据库文件的存放方式,文件和文件组
SQL Server 文件和文件组

一、什么是文件和文件组?

我们默认新建一个数据库[test],sqlserver就会给我们生成两个文件:test.mdf和test.ldf
这两个文件就称之为数据库文件。
数据库文件按存储的数据类型分为两类:一类是存储数据,比如说:test.mdf,另一类存储事务日志,比如说:test.ldf
那么,一个数据库只能有这两个文件吗?请考虑下面的问题:

  • 数据很大,磁盘空间不够用怎么办(比如说:数据库有150G,而存储的磁盘只有100G)?
  • 对一个150G的test.mdf文件进行读写,速度跟的上吗?
  • 如果,我只想对数据库中的部分表进行备份和恢复,面对150G的数据库该怎么办(用数据文件进行备份和还原比较麻烦,但提供了大数据量操作的可能性)?

基于上面的问题,我们肯定能想到:把数据文件拆分啊!对的,sqlserver允许一个数据库有多个数据文件和多个日志文件,并且将它们进行了逻辑分组(日志文件不在这个分组内),称之为:文件组。
总结来说,它们具有如下的体系:
在这里插入图片描述
从上图也可以看出,其实存储数据的文件又分为两类:主文件和次要文件,主文件只能有一个,而次要文件可以有多个。
数据库的文件组可以有多个,但只能有一个默认的,我们以默认方式新建了test数据库后,它就有一个默认的文件组:PRIMARY,里面有一个主文件test.mdf(test.ldf是日志文件,不在文件组里,是单独存储的)。

另外:

  • 我们在数据库上无论新建表/索引等都是指定的文件组(没指定用默认的),而不是指定的数据文件。
  • 文件组内的数据是均匀分布在组内的各个数据文件中的。

二、应该怎么使用文件组和文件?

2.1 新建文件组和文件

我们可以在创建数据库的时候创建,也可以创建后再修改。无论哪种方式,我们都可以通过sql语句或者sqlserver客户端操作。
下面我给test数据库添加文件组和文件:
在这里插入图片描述
在这里插入图片描述

2.2 查看创建的文件组和文件

使用下面的命令查看:
在这里插入图片描述

2.3 在指定的文件组中创建表

在这里插入图片描述

2.4 给表test造数据,查看数据分布情况

在造数据之前,我们观察下文件组group1的数据文件情况:
在这里插入图片描述
可以看到,这两个数据文件的大小都是初始值:5M
开始造数据:
在这里插入图片描述
现在,我们再来看下文件组内数据文件的存储情况:
在这里插入图片描述

三、数据库的备份和恢复可以直接操作文件组

这个操作起来比较复杂,可以参考:
sql server 备份与恢复系列六 文件组备份与还原
在这里插入图片描述

查看数据库备份和还原的记录如下:
备份记录:

SELECT 
     bs.backup_set_id,
     bs.database_name,
     bs.backup_start_date,
     bs.backup_finish_date,
     CAST(CAST(bs.backup_size/1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS [Size],
     CAST(DATEDIFF(second, bs.backup_start_date,
     bs.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' [TimeTaken],
     CASE bs.[type]
         WHEN 'D' THEN 'Full Backup'
         WHEN 'I' THEN 'Differential Backup'
         WHEN 'L' THEN 'TLog Backup'
         WHEN 'F' THEN 'File or filegroup'
         WHEN 'G' THEN 'Differential file'
         WHEN 'P' THEN 'Partial'
         WHEN 'Q' THEN 'Differential Partial'
     END AS BackupType,
     bmf.physical_device_name,
     CAST(bs.first_lsn AS VARCHAR(50)) AS first_lsn,
     CAST(bs.last_lsn AS VARCHAR(50)) AS last_lsn,
     bs.server_name,
     bs.recovery_model
 FROM msdb.dbo.backupset bs
 INNER JOIN msdb.dbo.backupmediafamily bmf 
 ON bs.media_set_id = bmf.media_set_id
 ORDER BY bs.server_name,bs.database_name,bs.backup_start_date;
GO

还原记录:

SELECT 
     rs.[restore_history_id],
     rs.[restore_date],
     rs.[destination_database_name],
     bmf.physical_device_name,
     rs.[user_name],
     rs.[backup_set_id],
     CASE rs.[restore_type]
         WHEN 'D' THEN 'Database'
         WHEN 'I' THEN 'Differential'
         WHEN 'L' THEN 'Log'
         WHEN 'F' THEN 'File'
         WHEN 'G' THEN 'Filegroup'
         WHEN 'V' THEN 'Verifyonly'
     END AS RestoreType,
     rs.[replace],
     rs.[recovery],
     rs.[restart],
     rs.[stop_at],
     rs.[device_count],
     rs.[stop_at_mark_name],
     rs.[stop_before]
FROM [msdb].[dbo].[restorehistory] rs
INNER JOIN [msdb].[dbo].[backupset] bs
--on rs.backup_set_id = bs.media_set_id
ON rs.backup_set_id = bs.backup_set_id
INNER JOIN msdb.dbo.backupmediafamily bmf 
ON bs.media_set_id = bmf.media_set_id
GO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlserver:文件和文件组 的相关文章

随机推荐

  • FineReport数据本地连接

    数据连接的两种方式 一 在数据决策中建立连接 1 打开帆软设计器 找到服务器 点击报表平台管理 2 输入账号 密码进入到数据决策系统中 点击管理系统 数据连接 数据连接管理 3 点击新建数据库连接 选择自己要连接的数据类 这里以MySQL为
  • C语言,对数组 int arr[]={12,32,45,56,2,45,23,67,43,7} 实现简单选择排序。

    对数组 int arr 12 32 45 56 2 45 23 67 43 7 实现简单选择排序 include
  • Zookeeper 命令和查看节点数据

    1 ZooKeeper命令行 在安装目录bin下 执行zkcli cmd 或zkcli sh 然后输入命令 常用命令 1 查看数据 ls ls2 2 获取数据 get 2 四字命令 一些数据使用zkCli命令查看不到 使用四字命令则可以获取
  • windows最小化安装mysql8

    第一步 下载 从官网下载 https dev mysql com downloads mysql 第二步 安装 下载后解压到目录即可 我这里解压到D MYSQL mysql 8 0 32 winx64 mysql 8 0 32 winx64
  • word中matlab的图片,转为pdf格式时失真如何解决?

    在matlab figure里面 Edit gt Copy Figure 粘贴到Word里 再转成PDF 会出现图片的标题 title 错位 解决 用adobe pdf 打印即可 不要另存为
  • 一些关于机器学习和统计方面值得阅读的书籍

    一些关于机器学习和统计方面值得阅读的书籍 一下著作都是一些经典的英文著作 不是崇洋媚外 大部分的知识都是由人老外提出并发展的 国内一些书籍质量实在不敢恭维 所以在初始的学习时 最好还是选择英文的著作 解除第一手资料 对于启发式的学习很有帮助
  • ubuntu 搭建hyperledger-fabric开发环境

    GO环境 建议方式2 版本较新 方式 sudo apt get install golang 方式 wget https storage googleapis com golang go1 9 linux amd64 tar gz sudo
  • 【R包安装】某个编辑包不存在,不存在叫‘xxx‘这个名字的程辑包

    一 问题 我在运行是python调用R包出现以下问题 不存在叫 mclust 这个名字的程辑包 二 解决 1 镜像网站 打开RStudio 在工具栏选择 Tools gt global option gt packages gt 选择中科大
  • Android Studio调整改变界面代码字体的大小

    Android Studio调整改变界面代码字体的大小 打开android studio 在菜单栏中 点击File 选择Setting 对界面代码字体大小更改 进入到设置窗口后 在左侧栏中找到Editor 点击小三角就能展开 找到Font
  • C# TCP通信以及报文格式和接收处理

    目前有一个小demo 模拟的是一台机子上的服务器和客户端的发送和接收消息 我打包上传 有兴趣的可以下载看看 网址是 Tcp通信 本机发送接收 https download csdn net download yuanyuanluoluo 1
  • NAVICAT 用新建查询导入数据的时候如何忽略错误继续执行

    NAVICAT 用新建查询导入数据的时候如何忽略错误继续执行 一 一次性导出查询记录 在这里插入图片描述 https img blog csdnimg cn 二 sql遇错继续执行 数据库右键 导入sql文件 选择忽略错误 点击确定
  • vue父组件调用子组件中的方法、值的几种方式

    1 ref 直接在父组件内部给子组件标签添加ref属性 然后通过ref属性来调用子组件的方法 父组件 Parent vue
  • 苹果应用商店上架流程

    上架过程分七个步骤 按步骤一步步来 仔细看这个流程 少走很多弯路 不用一步步去试错 新手也能快速掌握上架流程 1 创建APP身份证 App IDs 2 申请iOS发布证书 3 申请iOS发布描述文件 4 上传ios证书编译打包IPA 5 在
  • 关于Unity启动时间过长(启动黑屏时间长)的问题

    好吧 Unity启动确实比其他引擎生成的游戏包慢些 关键是你启动的时候还要等上一段时间才显示Splash那个logo图 最近项目有个蛋疼得需求 需要在启动界面加进度帧动画 我也是醉了 刚开始的思路 用Unity单独做个启动场景 让Splas
  • conda,anaconda,miniconda的区别

    可能从conda miniconda和anaconda三个名词来说用得最多比较熟悉的应该是anaconda吧 包办一切 帮我们安装好了很多包和环境 我们都喜欢用现成的东西 懒得自己捣鼓 最近刚好有项目需要 用了一下miniconda 才慢慢
  • Win10下 vc++6.0打开文件闪退解决

    Win10下vc 6 0闪退解决方法 网上下载一个filetool exe的启动程序 下载之后如图所示 打开这个文件 选择你要解压的路径 之后点击Unzip 之后出现一个FileTool的文件夹 在这里插入图片描述 用vc 6 0打开工作空
  • windows密码破解(哈希破解技术)

    一 windows密码与哈希 1 我们用于登录的windows密码 在windows系统中会进行加密 一般密码加密文件储存在c盘的windows system32 config目录下 文件名是SAM文件 在system目录下有两个非常重要的
  • web前端——常用的标签

    html概述 1 1html全称 html全称 Hyper Text Markup Language 超文本标记语言 对于不同的浏览器 对同一标记符可能会有不完全相同的解释 因而可能会有不同的显示效果 1 2 html语法结构
  • python关于TypeError: Required argument 'mat' (pos 2) not found错误解决方法

    这个错误提示意思是 没有找到要求的参数 即代码里的函数缺少必要的参数 下面举个显示图片的例子 import cv2 img cv2 imread data wiki png cv2 imshow img cv2 waitKey 0 运行时会
  • sqlserver:文件和文件组

    环境 window10 x64 专业版 sqlserver2014 参考 官网 文件和文件组体系结构 sql server 里的文件和文件组使用 SQL Server中数据库文件的存放方式 文件和文件组 SQL Server 文件和文件组