データベースファイルに添付しようとしましたが、ファイルを含むフォルダーを参照できません


7

他のすべてのSQL Serverデータベースと同じフォルダーに配置したデータベースファイル(* .mdf、*。ldf)に添付しようとしています。dbファイルとすべてのアクティブなデータベースファイルを含むフォルダーを参照して、アタッチを開始します。「データベースの接続」を選択し、「追加」ボタンをクリックして、接続するデータベースのリストにデータベースを追加します。そうすると、次のエラーが表示されます。

TITLE: Locate Database Files - BESI-CHAD
------------------------------

D:\SQLdata\MSSQL10_50.SQLBESI\MSSQL\DATA
Cannot access the specified path or file on the server. Verify that you have the necessary security privileges and that the path or file exists.  

If you know that the service account can access a specific file, type in the full path for the file in the File Name control in the Locate dialog box.

------------------------------
BUTTONS:

OK
------------------------------

パスは正しく、前述したように、他のすべてのデータベースファイルが含まれているため、アクセス許可が問題になるとは思わないでしょう。

そのフォルダーを参照して、そこに配置したdbファイルに添付できない理由は何ですか?


ここで手足を外しますが、実際のファイルのACLを見てください!
user33788

ファイルを見つける前にエラーが発生します。フォルダーはSQL Mgt Studioにも表示されません。
チャド

クラスター環境を使用している場合は、クラスターディスクが依存関係に追加されていることを確認してください。SQL Serverのプロパティを確認し、必要に応じてクラスターディスクを追加します。

回答:


6

SQL Serverインスタンスのサービスには、データディレクトリやフォルダのパスを読み取るための十分な権限がありません。(ダイアログボックスにツリーを一覧表示するドライブのルートを含みます。)サービスには、少なくともパス全体のコンテンツを一覧表示する権限が必要です。

これが単なるテスト/開発環境である場合、これを解決する最善の方法は、SYSTEM-Accontで実行するようにSQL Serverインスタンスサービスを構成することです。SYSTEMアカウントは、ドライブのルートおよびデータフォルダーにアクセスできます。これにより、他の多くの問題も解消されます。

Windows認証を使用している場合、このフォルダーに対する十分な権限がない場合は、管理者としてManagement Studioを実行する必要もあります。

警告:本稼働サーバーにSYSTEMアカウントを使用しないでください。Exec-Commandを使用してデータベースをアタッチし、サービスがData-Folderにアクセスするための十分な権限があることを確認します。


3

ユーザーはファイルへの完全なアクセス権を持っている必要がありますが、私の意見では、「sa」または別のSQL管理者を使用してデータベースをアタッチすると、データベースユーザーはデータベースにアクセスできるようになります。


これはまったく間違っています。DiableNoirの回答を参照してください。
-deerchao

0

DiableNoirの答えは正しいようです。しかし、ここで別の投稿を読むまで、彼が何を意味していたのかよく理解できませんでし

短くて実用的な答えは次のとおりです。

[コンピューターの管理]> [SQL Server]> [プロパティ]> [ログオン]に移動し、ここで[ローカルシステムアカウント]のマークを確認する必要があります。

警告:DiableNoirによる警告に留意してください。


0

バックアップのソース/ターゲットフォルダーのセキュリティにUSERSグループを追加します。

これを行うには、フォルダーを右クリックしてコンピューター名を選択し、...ユーザーを追加します。


1
SuperUserへようこそ。入力し...ても、実際に何が起こっているのかを説明しません。戻ってステップやコマンドをリストして読者にわかりやすくしますか?
レイスタファリアン

0

次のような状況があります。SQLServerサービスはドメインアカウントで実行されます。ポリシーとして、ルートドライブからデフォルトの権限をいくつか削除します。

ファイルを参照してデータベースをアタッチしたり、データベースを復元しようとすると、SQL Serverリージョンのデータファイルを含むデフォルトフォルダーへのアクセスに失敗します。ただし、[データベースデータファイルの場所]フィールドにフォルダー名を入力し、[ファイル名]フィールドにファイル名を入力すると、問題なくデータベースが接続されます。

セキュリティログでエラーを検索すると、エラーに示されているフォルダーでエラー監査を有効にしているにもかかわらず、エラーはありません。

最終的に、データフォルダーのルートドライブの読み取りアクセス権を持つドメインアカウントを追加することで問題を修正しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.