トップ回答者
SQL Server Management Studioでデータベースを検索できない

質問
-
SQL Server 2012 (Express) を使用しています。OSはWindows 8 です。
データベースにアタッチするために SQL Server Management Studio Express のデータベースのオブジェクトエクスプローラでデータベースを右クリックしました。
そこで、追加(A)ボタンをクリックして表示されるデータベース ファイルの検索の左のツリーを開こうとしていますが、ここで問題がありました。
mdfファイルのあるフォルダの左に+ボタンが表示されません。このため、そのフォルダの下の階層にあるフォルダの中のmdfファイルを選択することが出来ません。
この場合、設定の問題があるのか、インストールにトラブルが発生しているのか、それすら分からないのですが、どうしたらよいのでしょうか?ぜひ、解決方法をご教授ください。
どうぞよろしくお願い致します。
回答
-
> メッセージ 5133、レベル 16、状態 1、行 1
> オペレーティング システム エラー 5(アクセスが拒否されました。)権限の問題のようですね。エラーメッセージを検索して見つけた以下のページが解決のための参考になるかもしれません。
How to Deploy .mdf Files
http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/afdf71b3-213f-473c-8047-32387dd8faf3/
エラーが出たら、エラーメッセージで検索してみると、同じ問題で悩んだ人がいれば解決策は見つかることが多いです。検索して自力で解決できるようにするのもスキルアップになりますので、トライしてみてください。検索する際は、英語のサイトも含めて広く検索することをお勧めします。例えば、今回の場合は sql server 5133 operating system error 5 のように英語のみをキーワードに検索すると上記の他にも参考になりそうなページが多々見つかります。
-
私も同様の状況で解決できずにおりましたが、
対象となるmdfファイルに共有アクセス許可を与えてみたところ、SQL Server Mnagement Studio Expressから検索が可能となりました。
+のでない展開できないフォルダー→右クリック→共有→特定のユーザー→ドロップダウンからEveryoneを選択して追加
→Everyoneのアクセス許可のレベルを読み取り/書き込みにする。
環境はWindows7 HP 64bit です。
共有が目的ではなく、アクセス権を与えるのが目的です。
フォルダーのプロパティーのセキュリティータブから、sqlserver側からのアクセス権を付加することでも可能です。
すべての返信
-
> mdfファイルのあるフォルダの左に+ボタンが表示されません。
Management Studio が壊れてなくて、データーベースへ接続できているのであれば、思い当たる原因としては、フォルダを間違えていて、そこに mdf ファイルがないということぐらいです。
試しに「データーベースの検索」ダイアログで、「ファイルの種類(T)」を[すべてのファイル(*)」にしてみたらどうなるでしょうか?
なお、DB をアタッチするには、アタッチする前に、SQL Server のサービスアカウントに、データ/ログファイル (.mdf, .ldf) があるフォルダに対するフルコントロール権限を与えることが必要ですので注意してください。詳しくは下記のページを見てください。今回の問題はそれ以前の話なので、権限の設定は関係ないと思いますが。
-
あまりいろいろなことを試すと発散するので、一つ一つ確認していった方がいいと思います。
もう一度聞きますが「フォルダを間違えていて、そこに mdf ファイルがない」ということは絶対にないんですね?
それが間違いないとして、問題は Management Studio を使ってアタッチできないということだけなんでしょうか? であれば、Transact-SQL でコマンドラインからアタッチできませんか?
データベースのアタッチ
http://technet.microsoft.com/ja-jp/library/ms190209.aspx -
いろいろ飛んで行ってしまって、申し訳ありません。
>もう一度聞きますが「フォルダを間違えていて、そこに mdf ファイルがない」ということは絶対にないんですね?
+マークのないフォルダの階層の下にフォルダが幾つかあり、その中にファイルがあります。
>Transact-SQL でコマンドラインからアタッチできませんか?
言葉が少なくて申し訳ありませんが、これも試してみました。しかし残念なことに、
メッセージ 5133、レベル 16、状態 1、行 1
オペレーティング システム エラー 5(アクセスが拒否されました。) により、ファイル "C:\xxxxx\Database\Data\Work\Work.mdf" のディレクトリ参照に失敗しました。
との表示がでます。 -
> メッセージ 5133、レベル 16、状態 1、行 1
> オペレーティング システム エラー 5(アクセスが拒否されました。)権限の問題のようですね。エラーメッセージを検索して見つけた以下のページが解決のための参考になるかもしれません。
How to Deploy .mdf Files
http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/afdf71b3-213f-473c-8047-32387dd8faf3/
エラーが出たら、エラーメッセージで検索してみると、同じ問題で悩んだ人がいれば解決策は見つかることが多いです。検索して自力で解決できるようにするのもスキルアップになりますので、トライしてみてください。検索する際は、英語のサイトも含めて広く検索することをお勧めします。例えば、今回の場合は sql server 5133 operating system error 5 のように英語のみをキーワードに検索すると上記の他にも参考になりそうなページが多々見つかります。
-
私も同様の状況で解決できずにおりましたが、
対象となるmdfファイルに共有アクセス許可を与えてみたところ、SQL Server Mnagement Studio Expressから検索が可能となりました。
+のでない展開できないフォルダー→右クリック→共有→特定のユーザー→ドロップダウンからEveryoneを選択して追加
→Everyoneのアクセス許可のレベルを読み取り/書き込みにする。
環境はWindows7 HP 64bit です。
共有が目的ではなく、アクセス権を与えるのが目的です。
フォルダーのプロパティーのセキュリティータブから、sqlserver側からのアクセス権を付加することでも可能です。
-
-
> ご指摘の方法でアタッチまでたどり着きました。
「ご指摘の方法」というのが具体的にどれか分かりませんが、everyone にアクセス権を与えるのはセキュリティ的に問題があると思います(文字通り「誰でも」アクセスできてしまう)。
それで問題なければいいのですが、やはり自分が紹介した MSDN フォーラムのページで Microsoft (MSFT) の方が提案されているように、以下のいずれかにするのがお勧めです。
(1) ユーザーインスタンスを利用する。
(2) .mdf ファイルを Data ディレクトリに移す。開発環境なら、My Document 下のフォルダに .mdf ファイルを置けて、アタッチしなくてすむ (1) が便利です。運用環境では (2) を選ぶべきです。