Восстановить базу данных в Docker-контейнере - PullRequest
0 голосов
/ 05 декабря 2018

Получение ошибки ниже при восстановлении базы данных AdventureWorks2017 в док-контейнере.Запуск SQL Server 2019 CTP 2.0 (mcr.microsoft.com/mssql/server:vNext-CTP2.0-ubuntu) Сохраняются как резервные, так и целевые тома данных.Нет проблем при создании новой базы данных.Проверены пути и они верны.Не возникает проблем при восстановлении с использованием последнего образа докера 2017 года.

У кого-нибудь еще есть проблемы с 2019-CTP2, обходные пути?

Сообщения 3634, Уровень 16, Состояние 1,Строка 7 Операционная система возвратила ошибку «2 (система не может найти указанный файл.)» При попытке «RestoreContainer :: ValidateTargetForCreation» для «/var/opt/mssql/data/AdventureWorks2017.mdf».Сообщение 3156, уровень 16, состояние 5, строка 7 Файл «AdventureWorks2017» не может быть восстановлен в «/var/opt/mssql/data/AdventureWorks2017.mdf».Используйте WITH MOVE, чтобы определить правильное местоположение файла.Сообщение 3634, уровень 16, состояние 1, строка 7 Операционная система вернула ошибку «2 (система не может найти указанный файл.)» При попытке «RestoreContainer :: ValidateTargetForCreation» для «/ var / opt / mssql / log / AdventureWorks2017_log».ldf.Сообщение 3156, уровень 16, состояние 5, строка 7 Файл «AdventureWorks2017_log» не может быть восстановлен в «/var/opt/mssql/log/AdventureWorks2017_log.ldf».Используйте WITH MOVE, чтобы определить правильное местоположение файла.Msg 3119, уровень 16, состояние 1, строка 7 Были выявлены проблемы при планировании оператора RESTORE.Предыдущие сообщения содержат подробности.Сообщение 3013, уровень 16, состояние 1, строка 7 RESTORE DATABASE ненормально завершается.

для создания контейнера.

$datapath = "D:\Foo";
$logpath = "D:\Foo";
$backuppath = "D:\Foo";
$pass = ":-)"

$ct = (docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=$pass" `
    -e "MSSQL_PID=Developer" -p 2017:1433 `
    -e "MSSQL_TCP_PORT=1433" `
    -v ${datapath}:/var/opt/mssql/data `
    -v ${logpath}:/var/opt/mssql/log `
    -v ${backuppath}:/var/opt/mssql/backup `
    -e "MSSQL_BACKUP_DIR=/var/opt/mssql/backup" `
    -e "MSSQL_DATA_DIR=/var/opt/mssql/data" ` 
    -e "MSSQL_LOG_DIR=/var/opt/mssql/log" `
    -d mcr.microsoft.com/mssql/server:vNext-CTP2.0-ubuntu)

Команда восстановления.

RESTORE DATABASE [AdventureWorks2017] FROM  DISK = N'/var/opt/mssql/backup/AdventureWorks2017.bak' 
WITH  FILE = 1,  
MOVE N'AdventureWorks2017' TO N'/var/opt/mssql/data/AdventureWorks2017.mdf',  
MOVE N'AdventureWorks2017_log' TO N'/var/opt/mssql/log/AdventureWorks2017_log.ldf', 
NOUNLOAD,  STATS = 1 

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Был в состоянии обойти эту проблему, сначала создав пустую базу данных, а затем восстановив с параметром замены.

0 голосов
/ 05 декабря 2018

Проверьте, предоставили ли вы полные права доступа к папке для сохранения mdf и ldf этой базы данных.

...