web-dev-qa-db-ja.com

SQL Server復元エラー-アクセスが拒否されました

ローカルマシンにデータベースを作成してから、テーブルDataLabTablestables.bakというバックアップを作成しました。

そのテーブルなしでそのバックアップをリモートマシンに移動し、復元を試みましたが、次のエラーが発生しました。

System.Data.SqlClient.SqlError: 'c:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTablesで' RestoreContainer :: ValidateTargetForCreation 'を試行中に、オペレーティングシステムがエラー' 5(Access is denied。) 'を返しました.mdf '。

それが問題である場合、どうすれば権利を修正できますか?

142
cdub

SQL Server 2012でこの問題が発生しました。

「ファイル」セクションの「すべてのファイルをフォルダーに再配置」とマークされたボックスをチェックするだけでした。

enter image description here

(クリックすると画像がフルサイズで表示されます)

もちろん、これは正しいバージョンのSQL Serverがインストールされていることを前提としています。

444
Exile

エラーメッセージから、復元操作のtargetc:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf)の検証中にエラーが発生したことがわかります。

それは次のように聞こえます:

a)そのファイルは既に存在し(既に以前に復元したため)、SQL Serverによって使用されています

または

b)そのディレクトリがまったく存在しない

あなたの質問で、あなたはそのテーブルのバックアップを作成したと述べました-それはSQL Serverのバックアップの仕組みではありません。これらのバックアップは常にデータベース全体(またはそのデータベースの少なくとも1つまたは複数のファイルグループ)です。

私の予感は、以前にそのデータベースを既に復元しており、2回目の復元では、復元ウィザードの[既存のデータベースを上書きする]チェックボックスをオンにしなかったため、既存のファイルを上書きできず、復元が失敗することです。

リモートサーバーで復元を実行しているユーザーは、明らかにリモートサーバー上のそのディレクトリにアクセスできません。

C:\program files\....は保護されたディレクトリです-通常の(管理者ではない)ユーザーはこのディレクトリ(およびそのサブディレクトリ)にアクセスできません。

最も簡単な解決策:BAKファイルを別の場所(たとえばC:\temp)に置いて、そこから復元してみてください

30
marc_s

私は同じ問題を抱えていました。 SQL ServerおよびSQL Server Agentサービスlogon asサービスは、バックアップの復元を実行するための書き込みアクセス権を持たないNetwork Servicesアカウントで実行されていたことが判明しました。

これらのサービスの両方をLocal System Accountとしてログオンするように変更し、問題を修正しました。

25
Flea

最近、SQL 2008 R2でこの問題に直面しましたが、以下のソリューションが役に立ちました。

1)復元しようとしているデータベースと同じ名前で新しいデータベースを作成します2)復元中に、上で使用したのと同じ名前を使用し、オプションで上書きオプションをクリックします

他のソリューションが機能しない場合は、上記を試してみてください。

9
Devin

バックアップ作成者にはMSSqlバージョン10がインストールされていたため、バックアップを取るときに元のファイルパスも保存します(同じ場所に復元できるようにするため)が、バージョン11があったため、宛先ディレクトリが見つかりませんでした。

そのため、出力ファイルディレクトリをC:\ Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA \に変更すると、データベースを正常に復元できました。

ソース

6
Philluminati

同様の問題がありました。 2005年の.bakファイルを復元しようとしましたが、まったく同じエラーを受け取りました。上書きオプションも選択しましたが、役に立ちませんでした。

私の解決策は、フォルダに移動してプロパティ画面からアクセス権を編集することにより、SQLユーザーに問題のディレクトリへのアクセスを許可することでした。

6
martijn

この問題で数時間も失われました。しかしそれをうまくやった:

私の場合、「アクセス拒否」は本当に「アクセス拒否」を意味していました。 Windowsデバイス上のmssqlstudioのユーザーアカウントは、エラーメッセージで指定されたフォルダーを完全に制御できませんでした。私はそれを完全にコントロールしました。アクセスは拒否されなくなり、復元は成功しました。

フォルダーがスタジオにロックされたのはなぜですか?知るか ?もっと答えようとせずに対処するのに十分な質問がありました。

2
abraham tio

この問題が発生したため、管理者としてログインし、問題を修正しました。

1
Rob Smith

別のシナリオは、複数のデータベースパスの存在です。まず、新しいデータベースが現在保存されているパスをメモします。したがって、新しい空のデータベースを作成してからTasks/Restoreを実行する場合、復元が使用しようとしているパスが、空のデータベースが作成されたディレクトリと同じであることを確認してください。作業中の現在のパスでない場合、エラーを拒否しました。パスが合法でない場合に見つけるのは非常に簡単で、パスが合法である場合に見つけるのははるかに困難ですが、現在のパスではありません。

0
demongolem

これを試して:

[DBの復元ウィザード]ウィンドウで、[ファイル]タブに移動し、[すべてのファイルをフォルダーに再配置する]チェックボックスをオフにして、復元先をC:から他のドライブに変更します。次に、通常の復元プロセスを続行します。正常に復元されます。

0
Raja Sekhar

同じ問題がありましたが、SQL Server 2008 R2を使用しました。オプションをチェックインし、SQLが.mdfファイルと.ldfファイルを保存するパスを確認する必要があります。SQLサーバーインストールのパスを選択する必要があります。私はこれで私の問題を解決しました、それがあなたを助けることを願っています。

0
Edgar Castillo

コメントできないのでごめんなさい...

同じ問題がありました。私の場合、問題は古いSQLサーバーフォルダー(サーバー上に存在した)に復元しようとしたことに関連していました。これは、新しいSQLサーバー(SQL Server 2014)で復元された古いSQLサーバーバックアップ(つまり、SQL Server 2012バックアップ)によるものです。実際の問題は、@ marc_sの回答とそれほど変わりません。とにかく、ターゲットフォルダーのみを新しいSQL Server DATAフォルダーに変更しました。

0
bubi

私の場合、復元元のデータベースのバックアップパスを再確認する必要がありました。以前に別のパスから復元したのは、初めて行ったときです。バックアップパスを修正して、最初に使用したバックアップパスを使用しましたが、機能しました。

0
SitecoreSyed

このような問題が発生しました。 SQL Serverフォルダーで圧縮を有効にするとエラーが発生します。

0
Arman Hayots

Frnds ...データベースの復元中に同じ問題が発生し、すべてのソリューションを試しましたが、解決できませんでした。その後、SQL 2005を再インストールしてみましたが、問題は解決しました。前回、SQLのインストール中にカスタマイズオプションをチェックするのを忘れました。インストール中に2回表示され、1つだけチェックしました。

0
Nishant

これは最善の解決策ではないかもしれませんが、SQL Server 2005で復元を行おうとしていましたが、SQL Server 2008に変更して機能しました。

0
alansiqueira27