问题描述如下:
有如下SAS代码通过HTTP下载文件到数据表中
filename h url 'http://wuyz:80/sasweb/asp/downfile.asp?rpt_id=56 ' recfm=f debug;
data cs1 (compress=yes);
infile h;
length content $256 sn 8;
input content $char256.;
rpt_id=56;
sn=_n_;
run;
运行之后产生如下错误:
NOTE: >>> GET /sasweb/asp/downfile.asp?rpt_id=56 HTTP/1.0
NOTE: >>> Host: wuyz:80
SAS 系统
NOTE: >>> Accept: */*.
NOTE: >>> Accept-Language: en
NOTE: >>> Accept-Charset: iso-8859-1,*,utf-8
NOTE: >>> User-Agent: SAS/URL
NOTE: >>>
NOTE: <<< HTTP/1.1 500 Server Error
NOTE: <<< Server: Microsoft-IIS/5.1
NOTE: <<< Date: Wed, 06 Apr 2005 01:40:47 GMT
NOTE: <<< Content-Type: text/html
NOTE: <<< Content-Length: 93
NOTE: <<<
ERROR: 从 HTTP 服务器接收到无效的应答。请使用调试选项获取更多信息。.
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: SAS 设置选项 OBS=0,并将继续检查语句。 这可能会导致 NOTE: 在数据集中没有观测。
WARNING: 数据集 WORK.CS1 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
WARNING: 数据集 WORK.CS1 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.02 秒
CPU 时间 0.00 秒
疑惑:
以前这程序的用的好好的,为什么突然就报错了呢?
分析:
把上面代码放在SAS窗口运行正常,提示如下:
NOTE: Infile H 是:
Filename=http://crserver:80/powerviewer/asp/downfile.asp?rpt_id=60,
Local Host Name=wuyz,
Local Host IP addr=10.3.8.225,
Service Hostname Name=crserver,
Service IP addr=10.4.8.226,Service Name=N/A,
Service Portno=80,Lrecl=256,Recfm=Fixed
NOTE: 从 Infile H 中读取了 54 条记录。
NOTE: 数据集 WORK.CS1 有 54 个观测和 3 个变量。
NOTE: 压缩的数据集 WORK.CS1 大小减少了百分之 0.00。
压缩为 2 页;不压缩将会要求 2 页。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.57 秒
CPU 时间 0.01 秒
表明运行正常
得出这段代码应该还是没问题的 ,也许是环境发生变化,导致错误
突然想起我最近为了方便调试一个ISAPI DLL,所以改变了IIS的配置,没有选上缓存ISAPI应用程序,难道跟那有关系呢?
解决:
天知道,竟然真是这个问题,重新选上缓存ISAPI应用程序,这段代码重新运行正常了
故障原因分析:
不好意思,我也不知道,得问SAS公司才知道
结论:
不要怀疑自己得编程能力,不要怀疑系统得正常运行能力,一定要捕抓任何蛛丝马迹 嘿嘿