データベース(xxx.mdf)の更新処理ができない

このQ&Aのポイント
  • Microsoft visual Web Developerを使ってWebサイトを作っています。IISからサイトにアクセスし、データベース(xxx.mdf)の更新処理を行なうと、データベースが読み取り専用であるというエラーが発生しています。
  • Microsoft visual Web Developerでデータベースのアクセス権限やIISの設定を確認することができます。
  • デバッグモードでは問題なくデータベースを更新できますが、通常のモードではデータベースが読み取り専用となってしまいます。
回答を見る
  • ベストアンサー

データベース(xxx.mdf)の更新処理ができない

Microsoft visual Web Developerを使ってWebサイトを作っています。 IISからサイトにアクセスし、データベース(xxx.mdf)の更新処理を行なうと、以下のエラーになります。 ******************************************************* データベース "C:\xxx\APP_DATA\aaa.MDF" を更新できませんでした。データベースが読み取り専用です。 ******************************************************* Microsoft visual Web Developerを使い始めたばかりなので、よく分からないのですが、データベースのアクセスを設定できるのでしょうか? それとも、IISの設定がおかしいのでしょうか? デバッグモードでは問題なくデータベースを更新できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.3

MDFを直接開くようであれば、エクスプローラ上でxxx.mdfを右クリックし、「プロパティ」「セキュリティ」タブで、ユーザ/グループにASPNETを加え、「書き込み・変更」をチェックします。 現在は「Everyone」の「読込み」がチェックされている状態かと思います(つまり誰でも読込みは可能)。 面倒ならば、ドライブのルートごと「セキュリティ」を「Everyone」に「フルサポート」してしまえばいいです(セキュリティ的にはアレですが)。またいっそ、セキュリティ設定対象にならない「FAT32」ディスクにファイルを置くとか(乱暴)。 ASP.NETの場合は「IISがDBを操作する」ではなく、「IISが起動したプロセスがDBを操作する」というイメージです。 Visual Studioでのデバッグ時は、「DebuggerUser」というアカウントが立ち上がっていますが、こいつには自動的に書込権限が付与されていますので注意です。

amamaq
質問者

補足

aspnetさん: ありがとうございます。 また問題が!(涙) エクスプローラ上でxxx.mdfを右クリックし、「プロパティ」を開きましたが、「セキュリティ」タブがありません。 「全般」と「概要」しかないのです。 根本的になにか違うのでしょうか?

その他の回答 (2)

  • aspnet
  • ベストアンサー率79% (72/91)
回答No.2

単にDBへの書込権限がないためと思われます。 ASP.NETにおけるプロセスアカウントは、 IIS6.0の場合、"Network Service" IIS5.Xの場合、ASPNET になっていますので、これらのユーザについて書込・変更権限を設定してください。 IISにおける匿名アカウント"IUSER_サーバ名"は、ASP.NETの場合関係ありません。

amamaq
質問者

補足

aspnetさん: どうもありがとうございます。 IIS関連の設定はどどど素人でよく分からないのですが、 具体的にはどこで設定すればよいのでしょうか? バージョンは5.1です。 よろしくお願いしますm(_ _ )m

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

IIS_IUSRSに書き込み・変更の権限があるかどうか

amamaq
質問者

お礼

回答どうもありがとうございます。 「IIS_IUSRSに書き込み・変更の権限があるかどうか」とは? 具体的には、IISのプロパティ画面-仮想ディレクトリの「書き込み」にチェックを入れるということでしょうか? これもやってみたのですが、どうも上手くいきません。(><;

関連するQ&A

  • Visual Web 2010でのDBアクセス

    はじめまして Windows Server 2008 SQL SERVER 2008 R2 IIS7.0 Microsoft Visual Web Developer 2010VB の環境で動作させています。 一台のサーバーマシンに、SQL SERVER 2008R2,IIS7.0をインストールした状態なのですが、Webページ上のMicrosoft Visual Web Developer 2010VBのプログラム(新しいwebページのデフォルト)によりログインページにてデーターベースをアクセスすると CREATE DATABASE 権限がデータベース 'master' で拒否されました。 と、メッセージが出ます。 Microsoft Visual Web Developer 2010のデバッグでは実行できるのですが、 OS,データーベースの動作環境の設定がうまくできていないのでしょうか? 当方サーバーの設定およびデータベースの知識がないため、今回のことに対して掲示する情報がわかっていません。 この情報がほしいなどありましたら教えてください。 また現在の目標はMicrosoft Visual Web Developer 2010のwebページ新規作成にて構築されるデフォルトのwebページを動作させることです。 お願いいたします。

  • IISからWebサイトを開くと、DBに書込みできない

    ASP.NetでWebサイトの開発をしています。 ディベロッパーのデバッグモードでは問題なく、SQL Serverへの書込みができるのですが、ISSの仮想ディレクトリを介してWebサイトを開くと、読込みはできますが、書込みができません。(以下のエラー) どこにどんな設定をすればよいのでしょうか? どなたか教えて下さい。 ちなみに、エクスプローラから該当xxx.MDFのプロパティを開いても、 「概要」「全般」ダブしかありません。 ****エラー内容******************************************** xxx.MDF" を更新できませんでした。データベースが読み取り専用です。 ***********************************************************

  • VBWDでデータベースをランダム表示できずに困っています

    課題研究でVisual Basic Web Developer 2008 ExpressとサーバにIISとDBにAccessを用いて、Webアプリケーションの開発を行っているのですが行き詰ってしまったためご助力お願いいたします。 開発環境 OS:XP Pro SP3  CPU:2.8Ghz メモリ:500MB タイトルのとおりデータベースの内容をランダムで表示したいのですが、うまくいきません。 現状はGridViewを用いてAccessのデータベースの内容を表示すること、そしてSQL文にOrder by Rnd(データ数)を入れてランダムに並び替えることまで出来ているのですが、これではWebページ上で更新をしてもデータベースが更新されないため? ランダムに並び替えが行われません。 VBのことをあまり理解しないまま、VBWDのデザインでのWebページ作成が楽ということで進めて来てしまったため、こういった場合aspx.vbにコードを書けばよいのか、SQL文を変えるべきなのかも理解できていません。 お時間ございましたら、ご教授願います。

  • 認証の設定方法について

    認証の設定方法について いつもお世話になっております。 Visual Web Developer2008の認証機能で自動作成した、App_Dataフォルダにある「APNETDB.MDF」を直接参照できないレンタルサーバを利用しております。しかし、SQL Server2005のデータベースは利用できるので、「APNETDB.MDF」の内容を手動で移行したいと思っております。その場合、ログインコントロールとの関連付けはどこでどのように行ったらよいのか、ご教示いただければ助かります。 (ログインコントロールとデータベースの関係の設定方法を知りたいです) よろしくお願いいたします。

  • SQL Server Management studioで

    SQL Server Management studioで 新しくデータベース(MyDatabase)、テーブル(NameTable)を作成してみたんですが、 Visual Web developer 2010 Express のデータベースエクスプローラから MyDatabase.mdfを開こうとしても「このファイルは使用されています。…」 というような文言が出てきて、呼び出せません。 Vista,SQL Server 2008,Visual Web developer 2010 Expressの環境です。 どなたか教えて下さい。

  • VS.Netの種類について(VBでデータベース)

    現在Accessを使ってデータベース検索の簡単なテーブルを作っています。 これをVisual Basicでソフトウエアとして作りたいのですが、マイクロソフトのVisual Studioのサイトで確認したらSQLがVisual Studio.Net Professional 2003では使用できないようです。 はやりVisual Studio.NET Enterprise Developer 2003を購入しないといけないのでしょうか? (SQLが使えるかだけえ値段が倍も違う・・・) しかしVB.Netでデータベースを紹介している書籍では必ずしもEnterprise Developerを使っているわけではなさそうです(一部書籍ではEDを指定していますが)。 やりたいことは大量の.txtと.csvに記述してあるデータと、Web上に常に更新されるデータを吸い取って統計を取ることです。 あとVB.Netではこれらの統計データをグラフ化するのはExcelのように簡単にできるのでしょうか? まだVB.Netを使用したことがないため、お手数ですがおわかりのかたよろしくお願いします。

  • Web上のmdbへの接続

    Webサーバーやデータベースについてほとんど知識がないので、的外れだったらスミマセン。 VBやAccessで作ったアプリケーションで、Webサーバー上においたmdbファイルに接続するにはどのようにすれば良いのでしょうか? 過去スレで ■データベース → SQL Server ■Web サーバ → IIS ■開発 → Visual Web Developer という回答があったのですが、 いずれも全くタッチしたことがないので、出来れば、 ■データベース → mdb(Access) ■Web サーバー → よく分からないのですが、 HomePageに使用しているocnのサーバー ■開発 → Visual Basic が出来れば、大変ありがたいのですが。 これって、可能なのでしょうか。とんちんかんで恐縮です。

  • ASPによる アクセス2000のデータベース更新について

    アクセス2000で作成したデータベースに ASPでデータベースを更新しようとしたのですが、エラーとなって更新できずにいます。 (アクセスデータベース内容) ID F1 F2 1 TEST1 TEST2 2 1 2 3 4 5 4 23 ※ID の 5  に 23 を登録したい。 (ASP内容) <% ' データベースへの接続を開始 Set cn = Server.CreateObject("ADODB.Connection") cn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & _ "DBQ=" & Server.Mappath("TESTdb1.mdb") cn.Execute"INSERT INTO TTT(ID,F1) VALUES(5,23);" %> (エラー内容) エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /SQL-TEST/ncsch1.asp, line 7 アクセスの追加クエリで、INSERT INTO TTT(ID,F1) VALUES(5,23); を 実行したら、問題無く 5 23 が登録できましたので、データベース自体に他からの実行の場合、更新出来ないような 設定になっていると思うのですが、対処方法がわかりません。 どうすればよいか教えて頂けないでしょうか?

  • データベースに書き込むときの排他処理

    ASP3.0 IIS5.0 ASP初心者です。初心者の素朴な疑問なんですが、 ASPで、例えばWebページから入力された情報を、 Accessなどのデータベースに書き込むとき、 排他処理って必要ですよね? 一般的にどうやるのでしょうか? Application変数を使うのでしょうか? データベース自体に排他制御する機能があるのですか? よろしくお願いします。

  • vb.netでmdfデータベースにアクセスするとき

    こんにちわ。 いまvb.net2005expressでsqlserver2005expressの mdfデータベースにアクセスするコーディングを書いています。 ところが最初のコネクションの確立のところで下記のような コーディングをしているのですが, 後続の"sqlDataAdapter.Fill(sqlDataSet, "MST_User")"の行で, データベースにログインできない,というエラーが出てしまいます。 'DB接続文字列の設定 sqlconn.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=Database1;server=(local)" sqlconn.ConnectionString = "Data Source=(local);Database=Database1;" _ & "Integrated Security=SSPI;" ※なおmdfデータベースのファイル名は"Database1.mdf"です。 なおデータベースエクスプローラで[接続の変更]を開いて接続しようと すると"正しく接続されました"となります。 プログラムでログインできない理由は何でしょうか? 教えてください。よろしくお願いします。

専門家に質問してみよう