web-dev-qa-db-ja.com

別のプロセスによって使用されているため、プロセスはファイルにアクセスできません2

データベースでログ配布を有効にしています。場所logical name 'AB'E:\Databases\AB.ndfを50 MBとしてファイルを作成しました。しかし、後でこのファイルを削除して、同じ場所logical name 'AB_File'E:\Databases\AB.ndfが10 MBの別のファイルを作成しました。これで、バックアップの移動先のサーバーがエラーで失敗します。

Error: 

1) Could not apply log backup file 'some location of a .trn file' to secondary database

2)The operating system returned the error '32(The process cannot access the file because it is being used by another process.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'E:\Databases\AB.ndf'.

3) File 'AB_File' cannot be restored to 'E:\Databases\AB.ndf'. Use WITH MOVE to identify a valid location for the file.

次のスクリプトを実行してみました。

RESTORE LOG [db_name] FROM
DISK =  'E:\Log_Shipping\\db_name_20160817070500.trn'
WITH MOVE 'AB_FILE'
TO 'E:\Databases\AB.ndf',
standby = N'E:\Databases\\db_name_20160818.tuf'

私はこれを修正することができないようです。助けてください!

バックアップサーバー上のファイルの場所は、プライマリサーバー上のファイルの場所と同じです。また、ファイルグループは削除され、ファイル名は正しいです。

3
Ritesh Bhakre

あなたがエラーを言ったように

'RestoreContainer :: ValidateTargetForCreation'の試行中に、オペレーティングシステムがエラー'32(プロセスはファイルにアクセスできません。別のプロセスが使用しているためです。) 'を返しました

これは、復元しようとしているデータベースのデータベースファイルの名前が既に存在しているためです。

これは、2つの理由が考えられます。すべてのインスタンスで同じデータベースに対して同じ作成スクリプトを使用したか、そのインスタンスに復元しようとしているデータベースの復元を既に実行したかです。

この問題を解決するには、次の手順を実行します:

  1. SSMSの復元ページで、[オプション]タブを押します。

  2. [名前を付けて復元]列で、データファイルとログファイルの名前を一意の名前に変更します。

次に、復元ボタンを押してください。

あなたの参考のために ここ

2

いくつかのことを確認してください

  1. 論理および物理ファイル名
  2. ファイルはフォルダにまだ存在しています
  3. ファイルの場所を確認する

試す

RESTORE LOG [db_name] FROM
DISK =  'E:\Log_Shipping\\db_name_20160817070500.trn'
WITH FILE=1,
    MOVE 'AB_FILE'
    TO 'E:\Databases\AB.ndf',
    standby  N'E:\Databases\\db_name_20160818.tuf',
    NOUNLOAD,  REPLACE, RECOVERY, 
;
GO

それがあなたの問題を解決することを願っています。

0
DAVID