如何从 SQL 服务器中的数据库备份查看 .bak 文件 Docker

How to view .bak file from DATABASE BACKUP in SQL Server on Docker

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

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

我收到一条消息说备份已完成,但是我无法转到该位置并查看 .bak 文件。当我从设备 > 文件恢复时,SSMS 可以发现它在那里,但我无法在 window 资源管理器或 PowerShell 提示符中查看该文件。如何查看正在创建的备份文件?

编辑

数据库是本地 MS SQL Server Express 运行ning 在 docker 容器中。我认为它仍然应该像 SQL 服务器的普通实例一样运行,但也许有人可以解释它有何不同。

如果您有权访问最初备份 运行 的 SQL 服务器实例,您应该能够查询 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 实例 运行ning 中创建的。当您 运行 脚本进行备份时,备份存储在 SQL 实例可用的存储空间中(不适用于 SSMS)。 在此处检查如何访问:Accessing Docker container files from Windows or how to copy files from/to the docker container here: https://www.youtube.com/watch?v=ht4gqt4zSyw.