如何在Docker上的SQL Server中从数据库备份查看.bak文件

问题描述

在编写备份命令后,如何查看.bak文件?例如,当我运行一个包含此sql的脚本时:

DECLARE @database NVARCHAR(75) = 'MyDatabase';
DECLARE @filename NVARCHAR(75) = 'C:\temp\MyDatabase.bak';
BACKUP DATABASE @database
TO disK = @filename;

我收到一条消息,说备份已完成,但是,我无法转到该位置查看.bak文件。当我从“设备”>“文件”还原时,SSMS可以拾取该文件,但是在窗口浏览器或PowerShell提示符下都无法查看该文件。如何看到正在创建的备份文件

编辑

数据库是在docker容器内部运行的本地MS sql Server Express。我认为它仍应像sql Server的普通实例一样工作,但也许有人可以解释它的不同之处。

解决方法

如果您有权访问最初运行备份的SQL Server实例,则应该能够查询msdb:

SELECT * FROM  msdb.dbo.backupset  
WHERE database_name = 'MyDBname' AND type = 'D' 

以下是将为我提供物理设备名称,备份开始日期,备份完成日期和备份大小的查询。

SELECT physical_device_name,backup_start_date,backup_finish_date,backup_size/1024.0 AS BackupSizeKB
FROM msdb.dbo.backupset b
JOIN msdb.dbo.backupmediafamily m ON b.media_set_id = m.media_set_id
WHERE database_name = 'YourDBname'
ORDER BY backup_finish_date DESC
,

您看不到备份文件,因为该文件是在Docker容器中运行的SQL实例中获取的。当您运行脚本进行备份时,备份将存储在SQL实例(而非SSMS)可用的存储中。 在此处检查如何访问:Accessing Docker container files from Windows,或在此处检查如何从Docker容器复制文件或将文件复制到Docker容器:{>