• ベストアンサー

CSV出力時、件数によりエラーとなってしまいます。

はじめまして IISの問題か、SQL Serverの問題なのかわからないので、両カテゴリーに同様の質問をさせていただいております。 OS:2003Server、DB:SQL Server2000 WEBサーバ、DBサーバは別サーバです。 CSVを出力するASPを実行させているのですが、出力件数が多い時に下記エラーとなります。 (数十件の場合は、問題ありません。) 【エラー内容】  Microsoft OLE DB Provider for SQL Server エラー '80004005'  [DBNETLIB][ConnectionOpen (Connect()).]SQL Server が存在しないか、アクセスが拒否されました。  /daityo/CsvOut.asp,行168 エラー箇所としては、SQLを実行しDBにアクセスする命令時に発生します。(実行毎に、エラーとなる行が変わります。) どこかで、タイムアウトしているのかと思い、'MetaBase.xml’の下記部分の値を変更しましたが、改善されませんでした。 AspMaxRequestEntityAllowed="102400000" 現在、手詰まり状態です。 皆様のお力をお貸しいただけないでしょうか? 宜しくお願いいたします。

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

  • ベストアンサー
回答No.4

.Netフレームワークとしてのコマンド待機時間ですので、 SQLServerに設定するのは今回はなしかなと。 MSDNのサンプルコードを参考にしてください。 プロパティですので、SQLを実行するたびに・・は必要ないですが、プログラムの起動時には必要な前処理になります。No.3 さんの回答で、Connectionは1回しか実行していない、と書かれていますよね。同じことです。

margon0721
質問者

お礼

お礼が遅くなって申し訳ありません。回答、ありがとうございます。 現在、同環境が社内にないため、客先にて確認しなければなりません。 近々、確認を行う予定です。 現在、下記の様にfunctionでDBに接続しているものに、ConnectionTimeout、CommandTimeoutを追加してみようと思います。 以前は、Win2000Serverで動いていたものを、今回2003Serverに移設したのですが、IIS5とIIS6では、この辺の設定をしてあげないとエラーになるんでしょうか? また、お手数おかけしますが、ご確認お願いします。 **************************************** function DB_Open() 'DBOPEN strcon="server=***;uid=***;pwd=***;database=***" set currdb=server.CreateObject("adodb.connection")    currdb.ConnectionTimeout = 300    currdb.CommandTimeout = 300    currdb.Provider="SQLOLEDB"    currdb.ConnectionString=strcon    currdb.Open end function ****************************************

その他の回答 (3)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

プログラムがどのように組まれているかわからないので何とも言えませんが、SQLServerへのConnection数が限度を超えているとかないですか? 例えばレコードを1件取得するたびにConnectionを作っているなど・・・ 一回プログラムを見直してみるといいかもしれません。

margon0721
質問者

お礼

回答ありがとうございます。 ソースを添付できるとよいのですが・・・ Connectionは、asp実行時に一回しか行っておりませんので問題ないかと思われます。 でも、そういった問題も考えられるということで、勉強になりました。 ありがとうございます。

回答No.2

ぬおっ、参考URLが入りきらなかったらしい。。。 すいませんが、ご自分で SqlCommand.CommandTimeout をググってください。

margon0721
質問者

お礼

早速の回答ありがとうございます。 確かに実行時にCommandTimeoutの初期設定である30秒前後でエラーとなります。 asp初心者の為、追加で質問させてください。 set cdrs=currdb.Execute(sqlstr) という様に、SQLを実行しているのですが、その度に SqlCommand.CommandTimeout=60 という様に命令しなければならないのでしょうか? それとも、SQL Serverの環境設定等あるのでしょうか? お手数おかけしますが、宜しくお願い致します。

回答No.1

SQLがタイムアウトを起こしているので、IISは関係ないでしょ。 SqlCommand.CommandTimeout で調べてみてください。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDataSqlClientSq

関連するQ&A