Как просмотреть файл .bak из резервной копии базы данных в SQL Server на Docker

Как можно просмотреть файл .bak, когда они пишут команду резервного копирования? Например, когда я запускаю скрипт, в котором есть этот SQL:

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

Я получаю сообщение о том, что резервное копирование завершено, однако я не могу перейти в это место и просмотреть файл .bak. SSMS может определить, что он есть, когда я восстанавливаю › файл устройства, но я не могу просмотреть файл ни в проводнике, ни в командной строке PowerShell. Как можно увидеть создаваемый файл резервной копии?

Изменить

База данных представляет собой локальный MS SQL Server Express, работающий внутри док-контейнера. Я думаю, что он все равно должен вести себя как обычный экземпляр SQL Server, но, может быть, кто-нибудь объяснит, чем он отличается.


person CoderLee    schedule 15.10.2020    source источник
comment
База данных находится в вашем регионе? Или это удаленный сервер БД?   -  person Kristianne Nerona    schedule 16.10.2020
comment
Файл резервной копии создается на машине, где работает SQL Server, поэтому, если вы подключены к удаленному SQL Server, он находится на диске `C:` этого компьютера....   -  person marc_s    schedule 16.10.2020
comment
База данных находится на машине, которую я использую, поэтому она локальна и никуда не копируется на удаленный сервер.   -  person CoderLee    schedule 16.10.2020
comment
Помогает ли список скрытых подкаталогов и размеров?   -  person HABO    schedule 16.10.2020
comment
@HABO совсем нет, это тоже не показывает. Похоже, только SSMS знает, что он существует...   -  person CoderLee    schedule 16.10.2020


Ответы (2)


Вы не можете увидеть файл резервной копии, потому что он был получен в экземпляре SQL, работающем в контейнере Docker. Когда вы запускаете сценарий для создания резервной копии, резервная копия сохраняется в хранилище, доступном для экземпляра SQL (не для SSMS). Узнайте, как получить доступ здесь: Доступ к файлам контейнера Docker из Windows или как скопировать файлы из/в док-контейнер здесь: https://www.youtube.com/watch?v=ht4gqt4zSyw.

person Mariano Demarchi    schedule 15.10.2020
comment
Поскольку файлы фактически находятся в контейнере Docker, то как SSMS может просматривать файлы из файловой системы в Windows, когда их на самом деле там нет? - person CoderLee; 16.10.2020
comment
Вы уверены, что экземпляр SSMS не относится к установке SQL Server? Выполните тест сохранения запроса из SSMS в виде файла и попробуйте найти этот файл с помощью проводника. - person Mariano Demarchi; 16.10.2020
comment
Да, 100%, и он сохраняет файлы .sql на локальный диск, как и ожидалось. Я сохранил SQLQuery1.sql в Documents › SQL Server Management Studio, и он появляется там после сохранения. - person CoderLee; 16.10.2020

Если у вас есть доступ к экземпляру 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
person CR241    schedule 15.10.2020
comment
Я тоже это сделал, но файл невидим для командной строки, терминала Power Shell или проводника, даже если он отображается внутри результата этого запроса. Как вы можете просмотреть файл в месте(ах) в результате(ах)? - person CoderLee; 16.10.2020