【发布时间】:2020-12-26 07:01:12
【问题描述】:
在 Windows Server 2016 虚拟机上运行 IIS 10 以运行用 vbscript 编写的经典 ASP 应用程序。当我执行 sql 语句从 .xlsx Excel 文件中将表插入 .accdb 文件时,应用程序池间歇性地崩溃。与 .accdb 文件关联的任何脚本都可以正常工作 - 一旦我将 .xlsx 文件带入等式,就会出现问题。脚本如下:
Set DatabaseConnection = Server.CreateObject("ADODB.Connection")
DatabaseConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\inetpub\wwwroot\ORTDEV\QHT2.accdb"
TST0FilePath="C:\inetpub\wwwroot\ORTDEV\TST0ORIG.xlsx"
ssqlinsertresn ="SELECT * INTO TST0 FROM [Excel 12.0; HDR=YES;DATABASE=" & TST0FilePath & "]." & "[TASKRSRC$]"
DatabaseConnection.Execute ssqlinsertresn
- 当我运行脚本时,.xlsx 文件和 .accdb 文件都关闭了。我还尝试了各种 excel 文件来排除损坏的 .xlsx 文件。
- 我相信脚本是正确的。在 Windows 7 上使用 IIS 7.5,我已经在我的笔记本电脑上测试了脚本没有问题。我还将脚本保存为 .vbs 文件,并在登录到服务器和笔记本电脑时运行,没有问题。
- 当它通过 IIS 在服务器上运行时,它可能会在 4 次中使应用程序池 1 崩溃,但它是间歇性的且不一致。即使当它崩溃时,脚本仍然会执行并执行sql语句;但是,当应用程序池崩溃时,所有会话变量都会按预期清除。
- 我检查了 CPU 使用率高和内存泄漏 - 没有发现任何东西。
- 我已启用跟踪,但未显示此问题的跟踪日志。
- 我有错误发送到浏览器打开 - 没有错误出现,因为脚本按预期执行。
- 托管管道模式设置为经典,虽然我也测试过集成。 .Net CLR 版本设置为 v2.0.50727,但我也测试了 V4.0.30319。启用 32 位应用程序设置为 true。最大工作进程设置为 1,因为我使用的是会话变量。快速故障保护已开启,最多可在 5 分钟内发生 10 次故障。
- 我正在开发网站上进行测试,我是唯一使用它的人。
- DebugDiag 说:“请与供应商 Microsoft Corporation 联系以解决有关以下文件的问题:C:\Windows\System32\VCRUNTIME140.dll”。基本上,看起来有一个与 VCRUNTIME140.dll 关联的未处理异常。可以看到目录中安装的dll,所以不是丢失了。
- 事件查看器显示事件 ID 5011 -“服务于应用程序池 'ORTDEV' 的进程与 Windows 进程激活服务发生了致命的通信错误。”
- 此虚拟机上运行的内容不多。已安装多个 SQL Server,但仅使用 2014。
对接下来的步骤有什么建议吗?
谢谢
基思
【问题讨论】:
标签: dll vbscript asp-classic adodb iis-10