- - PR -
DB同時接続でエラー
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-22 16:04
お世話になります。
現在ドロップダウンリストを2つ(AとB)用意し Aには都道府県を BにはAで選ばれた都道府県の市区町村を表示しています。 【表示のタイミング】 A:Load時にデータをセット B:AのSelectedIndexChanged時にデータをセット 【セットの仕方】 Dim dbCom As SqlDataAdapter Dim dsPageData As New DataSet A↓ dbCom = New SqlDataAdapter("SELECT TDFK_CD, TDFK_NAME FROM M_TODOFUKEN ORDER BY TDFK_CD", "接続文字列") B↓ bCom = New SqlDataAdapter("SELECT SKCS_CD, SKCS_NAME FROM M_SHIKUCHOSON WHERE TDFK_CD ='Aの都道府県コード' ORDER BY SKCS_CD", "接続文字列") dbCom.Fill(dsPageData, "DDLVL") Field_Name.DataSource = dsPageData.Tables("DDLVL").DefaultView Field_Name.DataBind() という様にデータをセットしています。 単体では上記内容で問題なく動作するのですが、 複数の人間が同時に処理を行うと、100%ではないのですが 何かのタイミング(サーバの負荷が高くなる?)でセッションが破棄されているようです。 テストを行っていて思ったのですが、サーバへの負荷が高くなると セッションが勝手に破棄されてしまうことはあるのでしょうか? また、DBへのアクセス(更新はなし。単に読むだけ)を同時に行うというケースを 考慮するにはどのようなことが必要となるのでしょうか? よろしくお願いします。 開発環境 OS:WindowsXP 言語:ASP.NET(Web Application) DB:2000SERVER | ||||||||||||
|
投稿日時: 2005-12-22 16:25
こんにちは。
現象は何ですか?そう判断された材料は何でしょう? _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2005-12-22 16:35
お返事ありがとうございます。
@処理を行っているページのロード時に 「Session("Login_ID")が空だったらあるページ(100.aspx)に遷移する」 とのことをしているのですが、100.aspxに遷移してしまう。 A100.aspxにSession("Login_ID")をテキストボックスに表示させているのですが 何も表示されない。 ということよりセッションが破棄されているのではないかな? と判断しました。 | ||||||||||||
|
投稿日時: 2005-12-22 16:52
なるほど。
それでは、その都道府県云々のページに絡む DB 処理が原因では?と判断された材料が何かあるのでしょうか? そのページだけ頻発するとかでしょうか。
多分そんな事はないのでは? セッションの保存先は、InProc ? SQLServer ? StateServer ? Session("Login_ID") を削除する処理はどこにもないですか? セッションをクリアする処理はどこにもないですか? セッションタイムアウトが短いだけだとかはないですか? _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2005-12-22 17:43
TRY〜CATCHを外した状態で都道府県を選択すると エラーページにかわります。 内容は「オブジェクト参照がオブジェクト インスタンスに設定されていません。」で 「dbCom.Fill(dsPageData, "DDLVL")」の箇所が赤字で表示されます。 そのため、DB処理でエラーとなっているのかな?と
セッションの保存先は特に指定はしていません。 ってことは、InProc?になるのでしょうか?
Sessionを削除する処理は特に行っていません。 また、タイムアウトもデフォルト(20分)のままです。 テスト用にコマンドボタンを1つとドロップダウンリストを6つ作成しました。 ドロップダウンリストは都道府県3つ・市区町村3つです。 そこで、あらかじめ都道府県は選択しておき、コマンドボタンの押下で市区町村(3つ)をセットする。という事を行っています。 2人同時にコマンドボタンを連続で押下すると 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 となり「dbCom.Fill(dsPageData, "DDLVL")」の箇所が赤字で表示されます。 どういった現象なのでしょうか? よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-12-22 18:02
どういう事でしょう?Login_ID のセッションがなくて困っていたのではないのでしょうか? 二つは別の問題ですか? それとも例外が発生したら、「あるページ(100.aspx)」に遷移するようになっていたので、混同したという事でしょうか? dbCom が「オブジェクト参照がオブジェクト インスタンスに設定されていません。」ですか? dsPageData が「オブジェクト参照がオブジェクト インスタンスに設定されていません。」ですか? お出しになっている情報が少ないので判断しかねます。 全部とは言いませんが、問題個所の周辺コードを出せますか? _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2005-12-22 18:04
あまり詳しくないので、はずしているかもしれませんが
変数のスコープなどは大丈夫でしょうか? | ||||||||||||
|
投稿日時: 2005-12-22 18:29
混乱させてしまって申し訳ございません。 元々はセッションが破棄されてしまって困っていたのですが、 調べていくうちに、DBへの接続でエラーが出ているのではないかと思い、 新たにコマンドボタンとドロップダウンリストを作成しテストを行った次第です。 作成したテスト内容で処理を行うと、セッションは破棄されていないようです。 なぜ、「dbCom.Fill(dsPageData, "DDLVL")」が赤字で表示されるような エラーが発生してしまうのでしょうか? 以下、ボタン押下時の処理です。 *********************************************************************************************** Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click DDL.DdlistValue(Me.ddl1, "2-1", Me.ddl01.SelectedValue) Me.ddl1.Enabled = True DDL.DdlistValue(Me.ddl2, "2-1", Me.ddl02.SelectedValue) Me.ddl2.Enabled = True DDL.DdlistValue(Me.ddl3, "2-1", Me.ddl03.SelectedValue) Me.ddl3.Enabled = True End Sub Public Class Ddl_Value Public Sub DdlistValue(ByVal Field_Name As DropDownList, ByVal Ddl_Kbn As String, ByVal Tdfk_Cd As String) Dim dbCom As SqlDataAdapter Dim dsPageData As New DataSet Select Case Ddl_Kbn Case "2-1" dbCom = New SqlDataAdapter("SELECT SKCS_CD, SKCS_NAME FROM M_SHIKUCHOSON WHERE TDFK_CD = '" & Tdfk_Cd & "' ORDER BY SKCS_CD", "接続文字列") end select dbCom.Fill(dsPageData, "DDLVL") Field_Name.DataSource = dsPageData.Tables("DDLVL").DefaultView Field_Name.DataBind() End Sub End Class *********************************************************************************************** |
1