ローカルマシンにデータベースを作成してから、テーブルDataLabTables
のtables.bak
というバックアップを作成しました。
そのテーブルなしでそのバックアップをリモートマシンに移動し、復元を試みましたが、次のエラーが発生しました。
System.Data.SqlClient.SqlError: 'c:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTablesで' RestoreContainer :: ValidateTargetForCreation 'を試行中に、オペレーティングシステムがエラー' 5(Access is denied。) 'を返しました.mdf '。
それが問題である場合、どうすれば権利を修正できますか?
エラーメッセージから、復元操作のtarget(c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf
)の検証中にエラーが発生したことがわかります。
それは次のように聞こえます:
a)そのファイルは既に存在し(既に以前に復元したため)、SQL Serverによって使用されています
または
b)そのディレクトリがまったく存在しない
あなたの質問で、あなたはそのテーブルのバックアップを作成したと述べました-それはSQL Serverのバックアップの仕組みではありません。これらのバックアップは常にデータベース全体(またはそのデータベースの少なくとも1つまたは複数のファイルグループ)です。
私の予感は、以前にそのデータベースを既に復元しており、2回目の復元では、復元ウィザードの[既存のデータベースを上書きする]チェックボックスをオンにしなかったため、既存のファイルを上書きできず、復元が失敗することです。
リモートサーバーで復元を実行しているユーザーは、明らかにリモートサーバー上のそのディレクトリにアクセスできません。
C:\program files\....
は保護されたディレクトリです-通常の(管理者ではない)ユーザーはこのディレクトリ(およびそのサブディレクトリ)にアクセスできません。
最も簡単な解決策:BAKファイルを別の場所(たとえばC:\temp
)に置いて、そこから復元してみてください
私は同じ問題を抱えていました。 SQL Server
およびSQL Server Agent
サービスlogon as
サービスは、バックアップの復元を実行するための書き込みアクセス権を持たないNetwork Services
アカウントで実行されていたことが判明しました。
これらのサービスの両方をLocal System Account
としてログオンするように変更し、問題を修正しました。
最近、SQL 2008 R2でこの問題に直面しましたが、以下のソリューションが役に立ちました。
1)復元しようとしているデータベースと同じ名前で新しいデータベースを作成します2)復元中に、上で使用したのと同じ名前を使用し、オプションで上書きオプションをクリックします
他のソリューションが機能しない場合は、上記を試してみてください。
バックアップ作成者にはMSSqlバージョン10がインストールされていたため、バックアップを取るときに元のファイルパスも保存します(同じ場所に復元できるようにするため)が、バージョン11があったため、宛先ディレクトリが見つかりませんでした。
そのため、出力ファイルディレクトリをC:\ Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA \に変更すると、データベースを正常に復元できました。
同様の問題がありました。 2005年の.bakファイルを復元しようとしましたが、まったく同じエラーを受け取りました。上書きオプションも選択しましたが、役に立ちませんでした。
私の解決策は、フォルダに移動してプロパティ画面からアクセス権を編集することにより、SQLユーザーに問題のディレクトリへのアクセスを許可することでした。
この問題で数時間も失われました。しかしそれをうまくやった:
私の場合、「アクセス拒否」は本当に「アクセス拒否」を意味していました。 Windowsデバイス上のmssqlstudioのユーザーアカウントは、エラーメッセージで指定されたフォルダーを完全に制御できませんでした。私はそれを完全にコントロールしました。アクセスは拒否されなくなり、復元は成功しました。
フォルダーがスタジオにロックされたのはなぜですか?知るか ?もっと答えようとせずに対処するのに十分な質問がありました。
この問題が発生したため、管理者としてログインし、問題を修正しました。
別のシナリオは、複数のデータベースパスの存在です。まず、新しいデータベースが現在保存されているパスをメモします。したがって、新しい空のデータベースを作成してからTasks/Restore
を実行する場合、復元が使用しようとしているパスが、空のデータベースが作成されたディレクトリと同じであることを確認してください。作業中の現在のパスでない場合、エラーを拒否しました。パスが合法でない場合に見つけるのは非常に簡単で、パスが合法である場合に見つけるのははるかに困難ですが、現在のパスではありません。
これを試して:
[DBの復元ウィザード]ウィンドウで、[ファイル]タブに移動し、[すべてのファイルをフォルダーに再配置する]チェックボックスをオフにして、復元先をC:から他のドライブに変更します。次に、通常の復元プロセスを続行します。正常に復元されます。
同じ問題がありましたが、SQL Server 2008 R2を使用しました。オプションをチェックインし、SQLが.mdfファイルと.ldfファイルを保存するパスを確認する必要があります。SQLサーバーインストールのパスを選択する必要があります。私はこれで私の問題を解決しました、それがあなたを助けることを願っています。
コメントできないのでごめんなさい...
同じ問題がありました。私の場合、問題は古いSQLサーバーフォルダー(サーバー上に存在した)に復元しようとしたことに関連していました。これは、新しいSQLサーバー(SQL Server 2014)で復元された古いSQLサーバーバックアップ(つまり、SQL Server 2012バックアップ)によるものです。実際の問題は、@ marc_sの回答とそれほど変わりません。とにかく、ターゲットフォルダーのみを新しいSQL Server DATAフォルダーに変更しました。
私の場合、復元元のデータベースのバックアップパスを再確認する必要がありました。以前に別のパスから復元したのは、初めて行ったときです。バックアップパスを修正して、最初に使用したバックアップパスを使用しましたが、機能しました。
このような問題が発生しました。 SQL Serverフォルダーで圧縮を有効にするとエラーが発生します。
Frnds ...データベースの復元中に同じ問題が発生し、すべてのソリューションを試しましたが、解決できませんでした。その後、SQL 2005を再インストールしてみましたが、問題は解決しました。前回、SQLのインストール中にカスタマイズオプションをチェックするのを忘れました。インストール中に2回表示され、1つだけチェックしました。
これは最善の解決策ではないかもしれませんが、SQL Server 2005で復元を行おうとしていましたが、SQL Server 2008に変更して機能しました。