0

.bakファイルからfilelistonlyを復元しようとすると、次のエラーが発生します。

メッセージ3201、レベル16、状態2、行1バックアップデバイス'C:\ Users ...\myFile.bak'を開くことができません。オペレーティングシステムエラー5(アクセスが拒否されました)。

ファイルは最初はブロックされていましたが、ブロックを解除したので、問題はありません。

4

1 に答える 1

2

エラー メッセージは、何が起こっているかを正確に説明しています。SQL Server サービス アカウントがアクセスできないフォルダーに .BAK ファイルを配置しました。

SQL Server サービス アカウントにプロファイル フォルダーへのアクセスを許可することでこれを "修正" できますが、これはセキュリティのベスト プラクティスに対する不必要な違反です。

バックアップやデータ ディレクトリなど、SQL Server サービス アカウントが既にネイティブ アクセス権を持っている場所にファイルを移動する方がはるかに簡単です。次のクエリの結果を見ると、データ フォルダーを見つけることができます (複数の有効な場所がある場合があります)。

SELECT DISTINCT SUBSTRING(physical_name, 1, LEN(physical_name) 
  - CHARINDEX('\', REVERSE(physical_name)) + 1) 
FROM [master].sys.master_files
WHERE [type] = 0;

また、データベースをバックアップしたことがある場合 (できれば幸いです!)、次の方法で有効なバックアップ場所を見つけることができます。

SELECT DISTINCT SUBSTRING(physical_device_name, 1, LEN(physical_device_name) 
  - CHARINDEX('\', REVERSE(physical_device_name)) + 1) 
FROM msdb.dbo.backupmediafamily;

もちろん、これらは、読み取り専用ボリューム上の読み取り専用データ ファイル、SQL Server がアクセスできる可能性があるがアクセスできないボリューム、.BAK ファイル用の十分な空き領域がないボリューム、またはバックアップの場所などを考慮していません。過去に使用されていたが、現在存在しない、またはアクセスできないもの。

于 2012-06-20T17:00:04.370 に答える