- PR -

DB同時接続でエラー

1
投稿者投稿内容
ミキ
常連さん
会議室デビュー日: 2004/11/12
投稿数: 34
投稿日時: 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/08/13
投稿数: 1019
投稿日時: 2005-12-22 16:25
こんにちは。

引用:

何かのタイミング(サーバの負荷が高くなる?)でセッションが破棄されているようです。


現象は何ですか?そう判断された材料は何でしょう?
_________________
囚人のジレンマな日々
ミキ
常連さん
会議室デビュー日: 2004/11/12
投稿数: 34
投稿日時: 2005-12-22 16:35
お返事ありがとうございます。

引用:

現象は何ですか?そう判断された材料は何でしょう?



@処理を行っているページのロード時に
「Session("Login_ID")が空だったらあるページ(100.aspx)に遷移する」
とのことをしているのですが、100.aspxに遷移してしまう。
A100.aspxにSession("Login_ID")をテキストボックスに表示させているのですが
何も表示されない。

ということよりセッションが破棄されているのではないかな?
と判断しました。

囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-22 16:52
なるほど。

それでは、その都道府県云々のページに絡む DB 処理が原因では?と判断された材料が何かあるのでしょうか?
そのページだけ頻発するとかでしょうか。

引用:

テストを行っていて思ったのですが、サーバへの負荷が高くなると
セッションが勝手に破棄されてしまうことはあるのでしょうか?


多分そんな事はないのでは?
セッションの保存先は、InProc ? SQLServer ? StateServer ?

Session("Login_ID") を削除する処理はどこにもないですか?
セッションをクリアする処理はどこにもないですか?
セッションタイムアウトが短いだけだとかはないですか?
_________________
囚人のジレンマな日々
ミキ
常連さん
会議室デビュー日: 2004/11/12
投稿数: 34
投稿日時: 2005-12-22 17:43
引用:

それでは、その都道府県云々のページに絡む DB 処理が原因では?と判断された材料が何かあるのでしょうか?
そのページだけ頻発するとかでしょうか。



TRY〜CATCHを外した状態で都道府県を選択すると
エラーページにかわります。
内容は「オブジェクト参照がオブジェクト インスタンスに設定されていません。」で
「dbCom.Fill(dsPageData, "DDLVL")」の箇所が赤字で表示されます。

そのため、DB処理でエラーとなっているのかな?と

引用:

セッションの保存先は、InProc ? SQLServer ? StateServer ?



セッションの保存先は特に指定はしていません。
ってことは、InProc?になるのでしょうか?

引用:

Session("Login_ID") を削除する処理はどこにもないですか?
セッションをクリアする処理はどこにもないですか?
セッションタイムアウトが短いだけだとかはないですか?



Sessionを削除する処理は特に行っていません。
また、タイムアウトもデフォルト(20分)のままです。



テスト用にコマンドボタンを1つとドロップダウンリストを6つ作成しました。
ドロップダウンリストは都道府県3つ・市区町村3つです。
そこで、あらかじめ都道府県は選択しておき、コマンドボタンの押下で市区町村(3つ)をセットする。という事を行っています。

2人同時にコマンドボタンを連続で押下すると
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
となり「dbCom.Fill(dsPageData, "DDLVL")」の箇所が赤字で表示されます。

どういった現象なのでしょうか?
よろしくお願いします。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-22 18:02
引用:

内容は「オブジェクト参照がオブジェクト インスタンスに設定されていません。」で
「dbCom.Fill(dsPageData, "DDLVL")」の箇所が赤字で表示されます。


引用:

@処理を行っているページのロード時に
「Session("Login_ID")が空だったらあるページ(100.aspx)に遷移する」
とのことをしているのですが、100.aspxに遷移してしまう。
A100.aspxにSession("Login_ID")をテキストボックスに表示させているのですが
何も表示されない



どういう事でしょう?Login_ID のセッションがなくて困っていたのではないのでしょうか?
二つは別の問題ですか?
それとも例外が発生したら、「あるページ(100.aspx)」に遷移するようになっていたので、混同したという事でしょうか?

dbCom が「オブジェクト参照がオブジェクト インスタンスに設定されていません。」ですか?
dsPageData が「オブジェクト参照がオブジェクト インスタンスに設定されていません。」ですか?

お出しになっている情報が少ないので判断しかねます。
全部とは言いませんが、問題個所の周辺コードを出せますか?

_________________
囚人のジレンマな日々
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-12-22 18:04
あまり詳しくないので、はずしているかもしれませんが
変数のスコープなどは大丈夫でしょうか?
ミキ
常連さん
会議室デビュー日: 2004/11/12
投稿数: 34
投稿日時: 2005-12-22 18:29
引用:

どういう事でしょう?Login_ID のセッションがなくて困っていたのではないのでしょうか?
二つは別の問題ですか?
それとも例外が発生したら、「あるページ(100.aspx)」に遷移するようになっていたので、混同したという事でしょうか?

dbCom が「オブジェクト参照がオブジェクト インスタンスに設定されていません。」ですか?
dsPageData が「オブジェクト参照がオブジェクト インスタンスに設定されていません。」ですか?



混乱させてしまって申し訳ございません。
元々はセッションが破棄されてしまって困っていたのですが、
調べていくうちに、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

スキルアップ/キャリアアップ(JOB@IT)