gpt4 book ai didi

sql - 从经典asp中的数据库查询返回的部分数据

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:06 25 4
gpt4 key购买 nike

有没有人遇到过来自经典 ASP 页面的 SQL 查询返回部分结果但没有错误的问题?

我有这样一种情况,页面上的特定查询(整个系统中的许多查询之一)每次运行时返回的行数不同,而且总是较少 比“正确”的数字要大,这是通过直接对服务器运行 SQL 来确定的。

我认为这可能与连接超时有关(因为长时间运行的查询会发生这种情况,而且我的时间显示它返回的时间非常接近超时),但我没有收到任何超时错误。相反,据我所知,它不会导致任何错误,并返回一个有效的 DataSet,然后代码会循环该数据集以构建结果表。

由于没有迹象表明发生了错误,因此没有任何数据不完整的迹象,这意味着用户不能再信任此报告。通常在这个系统中,“大型”查询经常发生 SQL 超时,我们会在页面上显示错误消息。

调查

  • 我检查了 HTML 源代码以确保没有我遗漏的注入(inject)错误,并且所有标记的格式都正确并且存在预期的页面元素。这表明从结果中写入特定行不是错误。** 此外,返回的行数每次都不同
  • 我已确认每次都在运行完全相同的查询。
  • 我已验证数据库中的数据没有在报告下发生变化(它是历史数据,我通过同时运行报告和对数据库的查询进行了交叉检查。)
  • 我尝试手动打印 query 中的任何错误, 但什么也得不到。
  • 我试过更改超时时间(尽管这没有帮助,因为我只能这样做这在开发环境中并且没有足够的数据由于this,数据库达到超时问题。)。
  • 预计总共只有大约 20 行,因此对于非常大的数据集来说不是问题。

有没有人遇到过来自经典 asp 页面的 SQL 查询只返回部分结果的情况,有什么方法可以检查或防止这种情况?

设置:

  • 经典的 ASP 网络应用程序
  • 大量使用 ADODB.Connection 对象来连接到 DB2 服务器后端数据库。
  • 就查询数据而言,数据库是静态

共享连接初始化如下:

connString = "Provider=MSDASQL.1;User ID=xxx;Data Source=XXX;Extended Properties=""DSN=XXX;UID=XXX;PWD=XXX;"""
Set conn = Server.CreateObject( "ADODB.Connection" )
Set cmd = Server.CreateObject("ADODB.Command")
conn.Mode = adOpenReadOnly
conn.Open connString
cmd.ActiveConnection = conn
cmd.CommandTimeout = 600

用法如下:

query = " SELECT blah FROM Foo WHERE ... " ' big long list of clauses defined from user selections.
cmd.CommandText = sql
Set oRs = cmd.Execute

Resposne.Write "<table>..." ' Write table headers here'
Do while (Not oRs.eof)
Response.Write "<tr>...</tr>" ' WRite details from oRs here
oRs.MoveNext
Loop
Response.Write "</table>"

最佳答案

尝试向查询中添加一个order by,这样它应该一次发送所有行并且您可以排除超时问题

关于sql - 从经典asp中的数据库查询返回的部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com