出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

無題   ひろのしまさん [2005/10/19 1:24:30] [5341]
  データ件数??(無題の質問の訂正)   ひろのしまさん [2005/10/19 1:29:42] [5342]
    Re:データ件数??(無題の質問の訂正)   はやしさん [2005/10/19 10:41:03] [5343]
      Re:データ件数??(無題の質問の訂正)   ひろのしまさん [2005/10/19 13:19:14] [5345]
        Re:データ件数??(無題の質問の訂正)   ひろのしまさん [2005/10/20 23:58:42] [5357]
          Re:データ件数??(無題の質問の訂正)   はやしさん [2005/10/21 10:16:12] [5359]
            Re:データ件数??(無題の質問の訂正)   ひろのしまさん [2005/10/21 22:34:06] [5364]
              Re:データ件数??(無題の質問の訂正)   はやしさん [2005/10/24 13:32:00] [5366]
                Re:データ件数??(無題の質問の訂正)   ひろのしまさん [2005/10/24 15:24:46] [5371]
                  Re:データ件数??(無題の質問の訂正)   はやしさん [2005/10/24 15:41:32] [5374]

[5341] 無題
投稿者:ひろのしまさん の <ホームページ> 2005/10/19 1:24:30
あるテーブルにインデックスであるIDを所有した状態で、
以下のようなロジックがあります。

Set cnc=Server.CreateObject("ADODB.Connection")
Set rst=Server.CreateObject("ADODB.Recordset")

Dim StrErr 'エラーの列を保存するコマンド
Dim FldCnt 'フィールドのインデックス
rst.Open "テーブル名",cnc,adOpenKeyset,adLockOptimistic
If rst.Recordcount>=1 Then
rst.Movefirst
Do Until rst.EOF
//空白であれば、列の位置と列名を保存する。
If IsNull(rst.Fields(FldCnt-1).value) Or rst.Fields(FldCt-1).value="" Then
StrErr=StrErr & rst.Fields(FldCnt-1).OrdinalPosition
End If
If Not IsNull(StrErr) and StrErr<>"" Then
cnc.Execute "Update テーブル名 set エラー='" & StrErr & vbCrlf & "' where ID=" & rst("ID") & ";"
StrErr=""
End If
rst.MoveNext
Loop
End If
rst.close
cnc.close
set rst=Nothing
set cnc=Nothing

このロジックが、500件前後になると限界なのか、突然”ページを表示できません。"というメッセージになってしまいます。
ASP,あるいはIISのどの設定が原因なのか把握できません。
どうかよきアドバイスをお願いします。

[5342] データ件数??(無題の質問の訂正)
投稿者:ひろのしまさん の <ホームページ> 2005/10/19 1:29:42
あるテーブルにインデックスであるIDを所有した状態で、
以下のようなロジックがあります。

Set cnc=Server.CreateObject("ADODB.Connection")
Set rst=Server.CreateObject("ADODB.Recordset")

Dim StrErr 'エラーの列を保存するコマンド
Dim FldCnt 'フィールドのインデックス
rst.Open "テーブル名",cnc,adOpenKeyset,adLockOptimistic
If rst.Recordcount>=1 Then
rst.Movefirst
Do Until rst.EOF
For FldCnt=1 To rst.Fields.Count
//ID列以外で、空白であれば、列の位置と列名を保存する。
If rst.Fields.name<>ID Then
If IsNull(rst.Fields(FldCnt-1).value) Or rst.Fields(FldCt-1).value="" Then
StrErr=StrErr & rst.Fields(FldCnt-1).OrdinalPosition & rst.Fields(FldCnt-1).Name & vbCrlf
End If
If Not IsNull(StrErr) and StrErr<>"" Then
StrErr=StrErr & "以上の項目が空白です。"
cnc.Execute "Update テーブル名 set エラー='" & StrErr & vbCrlf & "' where ID=" & rst("ID") & ";"
StrErr=""
End If
Next
End If
rst.MoveNext
Loop
End If
rst.close
cnc.close
set rst=Nothing
set cnc=Nothing

このロジックが、500件前後になると限界なのか、突然”ページを表示できません。"というメッセージになってしまいます。
ASP,あるいはIISのどの設定が原因なのか把握できません。
どうかよきアドバイスをお願いします。

[5343] Re:データ件数??(無題の質問の訂正)
投稿者:はやしさん 2005/10/19 10:41:03
こんにちは。

> このロジックが、500件前後になると限界なのか、突然”ページを表示できません。"というメッセージになってしまいます。

タイムアウトは考えられませんか?
参考URL:
http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/ja-jp/Default.asp?url=/resources/documentation/windowsserv/2003/standard/proddocs/ja-jp/qos_timeout.asp


追記:
ご質問をされるときは、プロダクトのバージョンなど調査に必要な事項を詳細に記載すると、より適切なレスが付くかもしれません。

[5345] Re:データ件数??(無題の質問の訂正)
投稿者:ひろのしまさん 2005/10/19 13:19:14
> 追記:
> ご質問をされるときは、プロダクトのバージョンなど調査に必要な事項を詳細に記載すると、より適切なレスが付くかもしれません。
PC:Fujitsu BIBLO MF6/600R PentiumV メモリ256mb
OS:Windows XP Professioal
サーバー環境:IIS Web サイト側を利用
言語:Active Server Pagesの環境で使用できる言語で、現在VBScriptを使用(<%%>の中と、<Script Language="VBScript"><!-- --></Script>の中)

タイムアウト(ConnectionTimeout)ですか・・・。
現在会社なので確認できません。
帰宅次第確認します。



[5357] Re:データ件数??(無題の質問の訂正)
投稿者:ひろのしまさん の <ホームページ> 2005/10/20 23:58:42
はやしさん。コメントします。
[管理ツール]→
[インターネットインフォメーションサービス]の[既定のWebサイト]を右クリック→
[プロパティ]→
[Webサイト]タブ→
[接続]の中の[接続のタイムアウト]
は既定値が900秒、つまり15分の設定でした。
で、試しに1800秒と設定しましたが、結果は"ページを表示できません"という画面に遷移され、最後のほうで
"サーバーが見つからないか、DNS エラーです。"
という文章でした。止まった件数も、毎回のような500件前後でした。
VBA上でほぼ同じロジックを組みましたが、6万件でも全く起きません。
方法としては、Accessのマクロかモジュールでそのロジックを呼び出すことも考えられますが、ASPでもAccessとは別の、何かデータアクセスの仕様制限等があるのでしょうか?コメントがあればよろしくお願いします。

[5359] Re:データ件数??(無題の質問の訂正)
投稿者:はやしさん 2005/10/21 10:16:12
こんにちは。

> [接続]の中の[接続のタイムアウト]
セッションのタイムアウトではなく、スクリプトのタイムアウトはどうなっていますか?

また、IISのバージョンは?

[5364] Re:データ件数??(無題の質問の訂正)
投稿者:ひろのしまさん の <ホームページ> 2005/10/21 22:34:06
> こんにちは。
>
> > [接続]の中の[接続のタイムアウト]
> セッションのタイムアウトではなく、スクリプトのタイムアウトはどうなっていますか?
>
スクリプトのタイムアウトは90秒が既定値でした。で、最大の20,0000,0000秒(20億秒)の設定をしましたが、1万件の処理をしようとして1400件目ほどで止まってしまいました。
> また、IISのバージョンは?
IIS Version5.1です。
ちなみに、セッションのタイムアウトは20分です。ここは既定値のまま変えていません。また、この部分のロジックにはセッション変数は使用していません。

[5366] Re:データ件数??(無題の質問の訂正)
投稿者:はやしさん 2005/10/24 13:32:00
こんにちは。

処理件数 500件が 1,400件に増えたので、効果はあったようですね。

(以下、何件処理したいのか提示されていないのと、1件当たりどれくらいの時間が掛かるのかも分からないので、適切な回答かはわかりません。)

処理件数から考えると、WEB画面で処理させるよりもバッチ処理化などを検討されてはいかがでしょうか?

[5371] Re:データ件数??(無題の質問の訂正)
投稿者:ひろのしまさん 2005/10/24 15:24:46
> 処理件数から考えると、WEB画面で処理させるよりもバッチ処理化などを検討されてはいかがでしょうか?
こんにちは。レスありがとうございます。
今私が作成しているのはとりあえず学習の為の物で、業務には関連はありません。VBAで作成したものをASPとVBScriptで作成しようと思ったまでです。Accessには仕様制限があったので納得はある程度行ったのですが、Webにおける仕様制限が今いち把握できなかったので、それを知りたかったのです。バッチ処理ですと、〜.batファイルになるんですかね。だとすれば未開の領域ですね。他のサイトでバッチ関連の情報を検索してみます。
ありがとうございました。

[5374] Re:データ件数??(無題の質問の訂正)
投稿者:はやしさん 2005/10/24 15:41:32
こんにちは。

> バッチ処理ですと、〜.batファイルになるんですかね。
〜.vbsでもできますよ。
ウィンドウズのタスクスケジューラと組み合わせれば、割と簡単にバッチ化ができるのではないでしょうか。



TreeBBS For ASP V.0.1.3
Program By YasNet