SQLサーバー管理スタジオを使用して、ファイルからデータベースを復元したい(タスク->復元->データベース。デバイスから選択してファイルを選択した後)。
その後、私はこのエラーを受け取ります:
オペレーティングシステムは、「E:\ Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\XXXXXX.mdf」で「RestoreContainer :: ValidateTargetForCreation」を試行中にエラー「5(Access is denied。)」を返しました。メッセージ3156、レベル16、状態8、サーバーXXXX、行2
この問題を修正するにはどうすればよいですか?セキュリティエラーですか?
SQLサーバーが実行されているアカウントは、バックアップファイルがある場所、またはデータベースを復元しようとしている場所にアクセスできません。 SQL Server構成マネージャーを使用して、SQL Serverインスタンスの実行に使用されるアカウントを検索し、そのアカウントが.BAKファイルとMDFは復元されます。
最近、この問題が発生しました。私が修正したのは、[データベースの復元]ダイアログの[ファイル]ページに移動し、[すべてのファイルをフォルダーに再配置する]をオンにすることでした。
私はちょうどこの同じ問題に遭遇しましたが、異なる修正がありました。基本的に、コンピューターにSQL ServerとSQL Server Expressの両方がインストールされていました。これは、SQL Expressに復元しようとしたときに機能しませんでしたが、SQL Serverに復元したときに正しく機能しました。
SQL 2012 DBでSQL 2008 R2バックアップデータベースを復元しようとしたときに、同じエラーが発生していました。このエラーは、Cドライブに.mdfファイルと.ldfファイルを配置するための権限が不十分であるためだと思います。簡単なことを1つ試した後、正常に復元することに成功しました。
これを試して:
[データベースの復元]ウィザードウィンドウで、[ファイル]タブに移動し、復元先をC:から他のドライブに変更します。その後、通常の復元プロセスを続行します。それは間違いなく正常に復元されます!
これがあなたにも役立つことを願っています。乾杯:)
私はこれを見つけ、それは私のために働いた:
CREATE LOGIN BackupRestoreAdmin WITH PASSWORD='$tr0ngP@$$w0rd'
GO
CREATE USER BackupRestoreAdmin FOR LOGIN BackupRestoreAdmin
GO
EXEC sp_addsrvrolemember 'BackupRestoreAdmin', 'dbcreator'
GO
EXEC sp_addrolemember 'db_owner','BackupRestoreAdmin'
GO
データベースをアタッチする場合は、「アタッチするデータベース」グリッド、特に.mdfファイルを指定した後の「所有者」列を確認してください。アカウントをメモし、mdfファイルとldfファイルの両方に対して完全なアクセス許可を付与します。
私の場合、_Restore Database
_ページのOptions
タブの下にあるOverwrite the existing database (WITH REPLACE)
のボックスをチェックする必要がありました。
このエラーが発生した理由は、データベースにMDFファイルが既に存在し、上書きされていなかったためです。
これが誰かを助けることを願っています。
[データベースの復元]ウィンドウの[ファイル]タブで[すべてのファイルをフォルダーに再割り当て]をオンにしましたが、ローカルマシンにデフォルトパスが存在しなかったため、このエラーが発生しました。変更したら復元できるようになったら、別のフォルダーにldf/mdfファイルがありました。
これは本日、私に起こりました。私はローカルサーバーの管理グループのメンバーであり、妨げられていないアクセス権を持っているか、そう思いました。インスタンスにそのようなDBがない場合でも、「replace」オプションにチェックマークを付けました。
以前は同じ名前のDBがあり、MDFおよびLDFファイルはサーバーのデータおよびログフォルダーに物理的に配置されていましたが、実際のメタデータはsys.databases。SQLサーバーのサービスアカウントも既存のファイルを上書きできません。また、ファイルの所有者が「不明」であることがわかりました。所有権を上記の2つのファイルに変更しなければなりませんでした。ローカルサーバーの管理グループごとに、名前を変更します。
そして、ついに機能しました。
アカウントには、バックアップファイルの場所へのアクセス権がありません。コンピューターマネージャー経由でSQL Server構成マネージャーに簡単にアクセスするには、次の手順を実行します
データベースを簡単に復元できるようになりました
上記のシナリオを試したところ、同じエラー5(アクセス拒否)が発生しました。深く掘り下げたところ、ファイル.bakにはSQLサービスアカウントへのアクセス権が必要であることがわかりました。不明な場合は、[スタート]-> [ファイル名を指定して実行]にservices.mscと入力し、SQL Serviceログオンアカウントを確認します。
次に、ファイルに移動し、右クリックして[プロパティ]の[セキュリティ]タブを選択し、編集して新しいユーザーを追加します。
最後に、完全なアクセス権を付与するために完全な許可を与えます。
次に、SSMSからバックアップの復元を試みます。