基于 ASP 经典 ODBC 查询中返回的数据量的服务器错误
Server error based on the amount of data returned in an ASP classic ODBC query
消息 "An error occurred on the server when processing the URL..." 在我执行 ASP Classic (ODBC) SQL 查询时出现。是否显示错误消息取决于查询将 return 编辑的数据量。该错误仅在我从 asp 执行查询时发生,而不是在从 phpMyAdmin 执行时发生。
我可以毫无错误地执行:
SELECT * FROM `customers` LIMIT 500
但是,下一个查询的结果是 "An error occurred on the server when processing the URL. Please contact the system administrator. If you are the system administrator please click here to find out more about this error."
SELECT * FROM `customers`
上述查询将 return ~3200 条记录,每条记录包含 27 个字段。
上述错误信息中的"here" link指向“https://docs.microsoft.com/en-us/iis/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/classic-asp-not-installed-by-default-on-iis”,这意味着ASP没有安装。它显然已安装,因为我可以执行先前的查询,其中包括对结果的限制。
如果我在 SQL 查询中试错 LIMIT,我发现我可以执行这个:
SELECT * FROM `customers` LIMIT 702
但是下一个查询导致错误:
SELECT * FROM `customers` LIMIT 703
LIMIT 与 return 由 SQL 查询编辑的字段数有关。例如,我可以执行以下任一查询(它们几乎相同,但一个包含城市,一个包含邮政编码):
SELECT CustomerID, Name, Address1, Address2, City FROM `customers`
SELECT CustomerID, Name, Address1, Address2, State FROM `customers`
以上两个查询 return ~3100 条包含 5 个字段的记录。
但是,我无法执行下一个查询,该查询将 return 6 个字段用于相同的 ~3100 条记录:
SELECT CustomerID, Name, Address1, Address2, City, State FROM `customers`
真的感觉记录数乘以字段数是有限制的。
我正在使用共享托管服务。我想知道他们的一端是否有会导致此错误的设置。我以前的主人没有遇到过这种情况。
谢谢!
ASP 缓存页面内容,您可能会达到缓存大小的限制。您所要做的就是偶尔转储缓存。我使用这样的东西:
x = x+1
if x mod 500 = 0 then
Response.Flush
end if
将其放在迭代每条记录的循环末尾(在循环内)。每500条记录它会转储缓存输出,然后继续。
(另一种选择是增加缓存大小,但我认为以上是更好的选择。无需不必要地增加服务器的负载。)
消息 "An error occurred on the server when processing the URL..." 在我执行 ASP Classic (ODBC) SQL 查询时出现。是否显示错误消息取决于查询将 return 编辑的数据量。该错误仅在我从 asp 执行查询时发生,而不是在从 phpMyAdmin 执行时发生。
我可以毫无错误地执行:
SELECT * FROM `customers` LIMIT 500
但是,下一个查询的结果是 "An error occurred on the server when processing the URL. Please contact the system administrator. If you are the system administrator please click here to find out more about this error."
SELECT * FROM `customers`
上述查询将 return ~3200 条记录,每条记录包含 27 个字段。
上述错误信息中的"here" link指向“https://docs.microsoft.com/en-us/iis/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/classic-asp-not-installed-by-default-on-iis”,这意味着ASP没有安装。它显然已安装,因为我可以执行先前的查询,其中包括对结果的限制。
如果我在 SQL 查询中试错 LIMIT,我发现我可以执行这个:
SELECT * FROM `customers` LIMIT 702
但是下一个查询导致错误:
SELECT * FROM `customers` LIMIT 703
LIMIT 与 return 由 SQL 查询编辑的字段数有关。例如,我可以执行以下任一查询(它们几乎相同,但一个包含城市,一个包含邮政编码):
SELECT CustomerID, Name, Address1, Address2, City FROM `customers`
SELECT CustomerID, Name, Address1, Address2, State FROM `customers`
以上两个查询 return ~3100 条包含 5 个字段的记录。
但是,我无法执行下一个查询,该查询将 return 6 个字段用于相同的 ~3100 条记录:
SELECT CustomerID, Name, Address1, Address2, City, State FROM `customers`
真的感觉记录数乘以字段数是有限制的。
我正在使用共享托管服务。我想知道他们的一端是否有会导致此错误的设置。我以前的主人没有遇到过这种情况。
谢谢!
ASP 缓存页面内容,您可能会达到缓存大小的限制。您所要做的就是偶尔转储缓存。我使用这样的东西:
x = x+1
if x mod 500 = 0 then
Response.Flush
end if
将其放在迭代每条记录的循环末尾(在循环内)。每500条记录它会转储缓存输出,然后继续。
(另一种选择是增加缓存大小,但我认为以上是更好的选择。无需不必要地增加服务器的负载。)