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.).
このファイルを復元することは可能ですか?もしそうなら、私は何を間違っていますか?
前もって感謝します。
使用しているビルドによっては、エラーが発生する場合は、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を使用)
Remote Desktop Connection
、PuTTY
セッション、またはその他の任意の方法を使用します。SQLCMD
を実行して、bashウィンドウでSQL Service
に接続します。sqlcmd -S localhost -U SA
必要に応じて、-Sおよび-Uパラメーターを置き換えることができます。
次の例では、SAユーザーを使用してローカルSQL Serverインスタンスに接続します。プロンプトが表示されたらパスワードを入力するか、-Pパラメータを追加してパスワードを指定します。
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。 でも実行できます。
構文が間違っています。 ドキュメント から:
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
を削除して、もう一度お試しください。