web-dev-qa-db-ja.com

SQLサーバー-LinuxサーバーインスタンスでのWindowsデータベースバックアップファイルの復元

SQLサーバーインスタンスで作業する必要がありますが、私のワークスペースではLinuxが実行され、提供されたデータベースバックアップはWindowsで実行されていました。

Linux環境にSQL Serverを正常にインストールし、DBeaverを使用してSQL Serverにアクセスしています。SQLServerインスタンスでこの.bkpファイルを復元しようとすると、主な問題が発生します。

データベースを復元しようとしています このSQLコマンドを使用して、このサイトで回答を読みました ですが、論理データファイル名と論理データログが必要です。そこで、次のSQLコマンドを実行しました。

RESTORE DATABASE FILELISTONLY
FROM DISK = '/var/tmp/(redacted).bkp';

SQLエラー5133が発生する

SQL Error [5133][S0001]: Directory lookup for the file "D:\SQL2012\DATA\(redacted).mdf" failed with the operating system error 2(The system cannot find the file specified.).

このファイルを復元することは可能ですか?もしそうなら、私は何を間違っていますか?

前もって感謝します。

5
Gabriel I.

使用しているビルドによっては、エラーが発生する場合は、Microsoftに報告する必要のあるバグである可能性があります。

あなたはまだ文書化されていない- sp_restore_filelistonly 試してみましたが、ブレントが彼の答えで言っているように、それは単なるラッパーです:

EXEC sp_restore_filelistonly
    @device_type = 'DISK',
    @backup_path = '/var/tmp/(redacted).bkp';

上記が機能しない場合は、Microsoftでバグレポートを必ず開いてください。

それは私のために働きます-私はテストしました(Microsoft SQL Server 2017(RTM-CU4)(KB4056498)-14.0.3022.28(X64)Feb 9 2018 19:39:09 Copyright(C)2017 Microsoft Corporation Developer Edition(64-bit) Linuxでは(Ubuntu 16.04.3 LTS))、私にとっては両方を使用して動作します(restore filelistonlyとドキュメント化されていないspを使用)

  • ディスクからファイルリストのみを復元= '/var/opt/mssql/backup/dbname_(FULL)_20170108_020026.bak'

enter image description here

3
Kin Shah
  1. Linuxボックスに移動するには、Remote Desktop ConnectionPuTTYセッション、またはその他の任意の方法を使用します。

  1. SQLCMDを実行して、bashウィンドウでSQL Serviceに接続します。

sqlcmd -S localhost -U SA

必要に応じて、-Sおよび-Uパラメーターを置き換えることができます。

次の例では、SAユーザーを使用してローカルSQL Serverインスタンスに接続します。プロンプトが表示されたらパスワードを入力するか、-Pパラメータを追加してパスワードを指定します。


  1. SQLCMDになったら、> 1プロンプトで次のことを試してください。

RESTORE DATABASE FILELISTONLY
FROM DISK = '/var/tmp/(redacted).bkp';

これにより、復元するファイルのリストが表示されます。これで、SQLCMDでこのコマンドを試し、必要に応じて値を置き換えます。

RESTORE DATABASE YourDB
FROM DISK = '/var/tmp/(redacted).bkp'
WITH MOVE '(redacted).mdf' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE '(redacted).ldf' TO '/var/opt/mssql/data/YourDB_Log.ldf'
GO

これは GUI。 でも実行できます。

MSDNソース:Linuxでデータベースを復元

LinuxバックアップとSQLCMDに関する優れた追加情報があるGraham OkelyのMS SQLヒント

これに関連するSOの回答。

1
Shaulinator

構文が間違っています。 ドキュメント から:

RESTORE FILELISTONLY   
FROM <backup_device>   
[ WITH   
 {  
--Backup Set Options  
   FILE = { backup_set_file_number | @backup_set_file_number }   
 | PASSWORD = { password | @password_variable }   

無効な構文であるRESTORE DATABASE FILELISTONLYを使用していることに注意してください。 Word DATABASEを削除して、もう一度お試しください。

0
Randolph West