アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在vb.net 2008 と SQL Server 2005を使ってアプリケーションを作成しています。

vbの方のソリューションエクスプローラーでデータベースを作成し、現在まで稼働させてきましたが、テーブル名の変更などができないなど不便な点が気になり、そろそろSQL Serverで管理したいと考えています。

そこでいろいろ試行錯誤してやってみたのですが、SQL Server側でアタッチしようとすると、ファイル(xxxxx.mdf)のパーミッションの関係で「アクセスが拒否されました」と出てしまいます。

そこでファイルのパーミッションをSQL Serverでもアクセスできるように変更したところ、その状態でアタッチもテーブル名の変更もできるのですが、今度はSQL Server側にパーミッションが変更されるようで、vbからアクセスできないようになってしまいました。

両者からアクセスできるようにするのはどうすればいいのでしょうか。
セキュリティの面もしっかりした状態で実現させたいと思っています。

現在の環境は以下の通りです。

SQL Server Express 2005
Visual Basic 2008 Professional (SQL Server 2005 Developmentも使えます)
Windows Vista Ultimate (64bit)

SQL Serverはwindows認証で使っていますが、不都合があればSQL Server認証に変更も可能です。

A 回答 (1件)

現在VB側のアクセスがユーザインスタンス(AttachDbFilename=C:\..\xxx.mdf;User Instance=True)になっているとすれば、そのままでは目的の形にするのは無理だと思います。


もともとユーザインスタンスは、そのPCにインストールされているSQL Serverにそのユーザだけがアクセス可能になるように利用時のみアタッチ/デタッチする仕組みですが、SQL Serverにアタッチしてしまうとそのファイルをユーザインスタンスで使うことはできなくなります。

>今度はSQL Server側にパーミッションが変更されるようで、vbからアクセスできないようになってしまいました。
とありますが、パーミッションというよりも、SQL Server自体が排他的にMDFファイルを抱えてしまう(=ずっと使用中)ことによりアクセスができなくなるということです。

したがって、VB側の接続方式を変更するしかないでしょう。
データソースを「SQL Serverデータベースファイル」ではなく「SQL Server」にして、SQL Serverにアタッチ済のデータベースに対して接続を行うように変更してみてください。
(Data Source=.\SQLEXPRESS;Integrated Security=True;Initial Catalog=データベース名というような接続文字列になるはずです)
    • good
    • 0
この回答へのお礼

大変わかりやすい説明ありがとうございました。
確かに上記の通りやってみたところ、双方から無事接続できました。
この辺の仕組みについて解説している本もサイトも見つけることができず、最終的にここで質問いたしましたが、jamshid6様には大変感謝しています。
ありがとうございました。

お礼日時:2009/09/24 07:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!