sp_restore_filelistonly 有什么作用?

Bre*_*zar 5 sql-server restore sql-server-2017

在 SQL Server 2017 中,应用累积更新 7 后,master 中有一个名为 sp_restore_filelistonly 的新系统存储过程。这是为了什么?

Bre*_*zar 3

sp_restore_filelistonly 是一个(当前)未记录的存储过程,具有两个参数:

  • @device_type NVARCHAR(10) - 就像“磁盘”
  • @backup_path NVARCHAR(360) - 需要指向您想要示例的确切备份文件,而不仅仅是其所在的文件夹路径

当您将其指向备份文件时,如下所示:

EXEC sp_restore_filelistonly
    @device_type = 'DISK',
    @backup_path = 'E:\MSSQL2017\Backup\StackOverflow2010.bak';
Run Code Online (Sandbox Code Playgroud)

它的功能类似于 RESTORE FILELISTONLY:

RESTORE FILELISTONLY FROM DISK = 'E:\MSSQL2017\Backup\StackOverflow2010.bak' WITH FILE = 1;
Run Code Online (Sandbox Code Playgroud)

您将获得一个输出集,其中包含备份中包含的文件:

在此输入图像描述

  • 逻辑名
  • 物理名称
  • 类型(D 表示完整,L 表示日志等)
  • 文件组名
  • 大小(以字节为单位)
  • 最大尺寸
  • 文件编号
  • 创建LSN
  • 删除LSN
  • 唯一身份
  • 只读LSN
  • 读写LSN
  • BackupSizeInBytes - 请注意,这是未压缩的大小,因此如果您的备份使用压缩,您将不会在此处看到真实的文件大小
  • 源块大小
  • 文件组ID
  • 日志组GUID
  • 差分基LSN
  • 差异基GUID
  • 为只读
  • 存在
  • TDE指纹
  • 快照网址

微软为什么要建造它?好吧,如果他们想让某人在不运行 RESTORE 命令的情况下获取文件列表。可能是职责分离,也可能是让 Azure 托管实例的自动化管道变得更容易。

  • `EXEC sp_helptext 'sys.sp_restore_filelistonly'` 显示它只是一个包装器,根据指定的 @device_type` 使用 `URL` 或 `DISK` 关键字执行 `RESTORE FILELISTONLY`。 (3认同)