如何在Docker上从SQL Server的DATABASE BACKUP中查看.bak文件



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

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

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

编辑

该数据库是在docker容器内运行的本地MSSQLServerExpress。我认为这应该仍然像SQL Server的正常实例一样,但也许有人可以解释它的不同之处。

您无法看到备份文件,因为它是在Docker容器中运行的SQL实例中获取的。当您运行脚本进行备份时,备份存储在SQL实例可用的存储中(而不是SSMS(。查看如何访问此处:从Windows访问Docker容器文件,或如何从Docker容器复制文件:https://www.youtube.com/watch?v=ht4gqt4zSyw.

如果您有权访问最初运行备份的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

相关内容

最新更新