SQL Server 2016データベースをSQL Server 2017 Dockerインスタンス(Microsoft/mssql-server-linux:latest
)。プロセスは次のようです:
docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=<strong password>’ -p 1433:1433 --name 'sql1' Microsoft/mssql-server-linux
docker exec -it sql1 mkdir /var/opt/mssql/backup
docker cp Foobar.bak sql1:/var/opt/mssql/backup
mssql -o 1433 -u sa -p
restore filelistonly from disk='/var/opt/mssql/backup/Foobar.bak'
<-返された各行は次のステップでmove
コマンドになりますrestore database Foobar from disk='/var/opt/mssql/backup/Foobar.bak' with stats=10, replace, move 'Foobar' to '/var/opt/mssql/data/Foobar.mdf', move 'Foobar_log' to '/var/opt/mssql/data/Foobar.ldf'
最後のステップは出力で失敗しています:
エラー:バックアップまたは復元が中止されました。
エラーログを見つけようとしたところ、/var/opt/mssql/log/errorlog
。 AFAICT、中止された復元操作からこのファイルに何も出力されません。
何が起こっているかをどのように判断できますか?詳細情報を取得するために使用できるログはありますか?
RESTORE
を含め、コンテナー内でアドホッククエリを実行する簡単な方法は、SQLCMDを使用することです。
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -Usa -P<strong password> -Q"restore database Foobar from disk='/var/opt/mssql/backup/Foobar.bak' with stats=10, replace, move 'Foobar' to '/var/opt/mssql/data/Foobar.mdf', move 'Foobar_log' to '/var/opt/mssql/data/Foobar.ldf';"