web-dev-qa-db-ja.com

データベースの復元が中止されるのはなぜですか?

SQL Server 2016データベースをSQL Server 2017 Dockerインスタンス(Microsoft/mssql-server-linux:latest)。プロセスは次のようです:

  1. Dockerコンテナを作成します:docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=<strong password>’ -p 1433:1433 --name 'sql1' Microsoft/mssql-server-linux
  2. バックアップディレクトリを作成:docker exec -it sql1 mkdir /var/opt/mssql/backup
  3. バックアップをディレクトリにコピー:docker cp Foobar.bak sql1:/var/opt/mssql/backup
  4. Mssqlサーバーにログイン:mssql -o 1433 -u sa -p
  5. バックアップされたファイルのリストを取得します:restore filelistonly from disk='/var/opt/mssql/backup/Foobar.bak' <-返された各行は次のステップでmoveコマンドになります
  6. データベースの復元: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、中止された復元操作からこのファイルに何も出力されません。

何が起こっているかをどのように判断できますか?詳細情報を取得するために使用できるログはありますか?

4
Brian Gradin

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';"
1
Dan Guzman