• 締切済み

SQLSrever 2008 R2のエラー

PC環境が以下ように複数あります A) Win7 32bit 英語版 B) Win7 32bit 英語版 C) Win7 32bit 日本語版 D) Win7 64bit 日本語版 各言語用のインストーラでSQLインストール済み 英語・日本語ではそれぞれ同じインストールファイル使ってセットアップ アカウント名・パスワードは多少異なりますが管理者権限ユーザで作業 Aで作成したデータベースデータをそのまま他の環境(PC)に作成するために 必要な mdf と ldfファイルをコピーして SQL Server Management Studioでアタッチしようとしたところ Dの環境下での作業時だけエラーが出てしまいました 検索したところ状況は以下と同じなんですが対処法として書かれている 管理者で実行してもエラーが改善されません http://hotate1973.seesaa.net/article/295051201.html なおかつ不思議なことに mdf と ldfファイルを C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA にコピーしてアタッチすると正常に処理できています (要は任意のフォルダにおいてアタッチできない) 任意のフォルダへのアクセスは普通にできています    どちらかと言えば    C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA    へのエクスプローラでのアクセスでアクセス権を求められたので許可しました    (これは他のPCでもすべて同じ) Dに限って何か特殊なことを行ったとか言ったことはないはずなのですが (違うところとすればビット数だけだと思うのですが) 何故こういった現象になるのかわからない状態です 特定の所でもアタッチできるならそこ使えばいいという話はあるのですが データの更新などの都合もあり同名データベースを別フォルダにおいて デタッチ・アタッチで切り替えたいのです(B/Cでは特に問題なくできている) 原因・対処方法など思い当たる方いるでしょうか?

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

恐らくDだけが64bitというのが問題なのだと思います。 Aでデータベースを作成したとすると、間違いなくデータベースは32bit番であると思います。 Dは64bitのOSなので、適当なところに置いたのではもしかすると64bitのデータベースと認識されているのかもしれません。 C:\Program Files(x86)のフォルダは、そこにあるのは64bitのOSのなかで32bitのプログラムをインストールするためのフォルダなのでそのフォルダの中であれば32bitのデータベースと認識されてアタッチが可能なのかなと推測されます。 頑張ってください。

koi1234
質問者

お礼

各種パターンを試しましたが 64ビット環境では素直に64ビットSQL使うというのが 無難という結論になりそうです ・32ビットSQLだけでは解決せず   (OS再セットアップ32ビットSQLだけの環境で再現率100%) ・64ビットSQL入れたところエラーにはなったが  管理者権限で実行することにより解決  一旦64ビットSQLでアタッチすると以後は32ビットSQLに戻しても  アタッチできるようになっている  そしてその判断はデータベースファイル毎に行われている     同じ状況に持ってくためにOS再インストールとなる     (SQLの再インストールでは問題再現しない) といったような状態でした データベース自体が64・32ビットだからといった問題ではなさそうです    どちらのデータベースでのアタッチもできて使えました 64ビットSQLの管理者権限で一度アタッチすれば以後管理者でなくても 動くので何かレジストリの情報が影響してるのは間違いないと思いますが ここまでのテストに既に何回もOS再インストールしているため 詳細のレジストリまで調査する元気がなくなってきました 今回作ろうとしてるのも結局はテスト環境の構築なので D環境での扱いについては今後どうするかを改めて検討したいと思います

koi1234
質問者

補足

回答ありがとうございます  調査継続中になります >データベースは32bit番であると思います。 その通りです(インストールには全て32ビット版インストーラを使用) 使っています >Dは64bitのOSなので、適当なところに置いたのでは >もしかすると64bitのデータベースと認識されているのかもしれません。 というところには思い当りませんでした ただ64/32でもデータベース形式自体は変わらないとMSサイトなどに 書かれていますしSSMS自体も32ビットアプリなので判断できないのかな という気もします   -> Dは通常メインで使っている環境であり、いろいろやりすぎて      システム破壊するとちょっと困るので別途テスト環境構築して      そこら辺のテストもしてみたいと思います      (64ビットOSで64ビットSQL入れてアタッチテスト予定) 自作アプリ(32ビット)でODBC使って64ビット環境下で動かしたときは 確かに設定で64・32ビットの影響が出て動かず悩んだのも事実ですですが とりあえず C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA フォルダにサブフォルダ作ってテータの切り替えができることは 確認できましたので原因がよくわからないままでも なんとかなりそうではあります   実は言われなければこれも思いついてなかったりする (後は自分がどこまで追求できるかかな  と) 調査でまた何かわかりましたら書き込みさせていただきます (一応自分がある程度納得できるまで質問自体は閉じません)