web-dev-qa-db-ja.com

データベースの復元時にエラーが発生しました(Windows 7テスト環境)

テスト環境としてWindows7オペレーティングシステムを使用しています。 SQL Server EEには、テストと本番という名前の2つのインスタンスがインストールされています。テストインスタンスからAdventureWorksデータベースから完全バックアップを取り、それを本番インスタンスに復元しようとしました。

RESTORE DATABASE [testikanta] FROM  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\Backup\AdventureWorks.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10
GO

次のようなエラーが発生しました:

Msg 3634, Level 16, State 1, Line 1
The operating system returned the error '32(failed to retrieve text for this error. Reason: 15105)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Data.mdf'.
Msg 3156, Level 16, State 8, Line 1
File 'AdventureWorks_Data' cannot be restored to 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Data.mdf'. Use WITH MOVE to identify a valid location for the file.
Msg 3634, Level 16, State 1, Line 1
The operating system returned the error '32(failed to retrieve text for this error. Reason: 15105)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Log.ldf'.
Msg 3156, Level 16, State 8, Line 1
File 'AdventureWorks_Log' cannot be restored to 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Log.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 1
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

問題はどこにありますか?これらのインスタンスをローカルマシン管理者と同じように実行しています(SQL Serverサービスは同じアカウントで実行されています)。

2
Undh

'32(このエラーのテキストを取得できませんでした。理由:15105) '

少し検索すると、これはSQL ServerがOS(Win32 API)エラーを正しく報告しない方法のようです。

エラー32はERROR_SHARING_VIOLATIONです。「ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。」

他の何かがファイルを開いています。これは他の接続である可能性があります。または、復元に使用されている接続でさえ、AdventureWorksが開いています。

2
Richard

私の場合、それは非常にばかげたことでした。何度もチェックしたところ、SASの開始日が「将来」正しくないことに気づきませんでした。メキシコではdd/mm/yyyyを使用していますが、問題はキャプチャされた日付でした。は「mm/dd/yyyy」であり、その日付は将来のものでした。その日付を更新した後、復元は機能しました。

1
GFZ

私はまったく同じ問題を抱えていました。 xxx.mdfをxxx2.mdf(およびログ)に変更すると、つまり、名前を変更するだけで解決しました。復元により、xxx.mdfファイルが自動的に削除されました。何が処理を続けているのかわかりません...本当にxxx.mdfにしたい場合は、xxx2.mdfが完了したときに追加の復元を実行できます...奇妙ですが、エラーなしで動作しました。とても完全です->元の名前xxx.mdfとxxx.ldf

データベースの復元ThedatebaseName
from disk = 'D:\ SQLbackup\mybackup.bak'
WITH MOVE'PhysicalName 'TO'D:\ SQL\xxx2.mdf'、
MOVE'PhysicalName_log 'TO'D:\ SQL\xxx2.ldf'、
REPLACE、STATS
GO
物理名は、手動で復元するか、次を使用したときに表示される名前です。
ファイルリストのみを復元
from disk = 'D:\ SQLbackup\mybackup.bak'
そしてそれは名前を表示します。幸運を。

0
user59660

私の状況では、.mdfと.ldbの両方が、復元先のディレクトリとは別のディレクトリにありました。したがって、ディレクトリも確認してください。

0
user191621

C:\ Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA \に移動します。SQLServerにこのフォルダーの「書き込み」権限を付与します。 (例:ネットワークサービスへのグランド書き込み許可)

0
Vin.X