无法查询SQL视图

时间:2016-09-29 08:25:26

标签: sql vbscript asp-classic

我正在使用旧的经典ASP网站并遇到问题。我可以查询数据库表但不查看视图。

对表的查询返回正确的行数:

Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM tblContent;"
rs.Open sqlQuery, conn, 1, 2
response.write "q1 cnt = " & rs.RecordCount

视图上的相同查询返回-1

Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM myView;"
rs.Open sqlQuery, conn, 1, 2
response.write "q2 cnt = " & rs.RecordCount

如果从SQL Server Management Studio运行,则两个查询都返回正确的行数,但只有一个在从.asp网页调用时才能正常工作。这似乎同样适用于DB中的所有表格和视图(我已经测试了其中的六个)。

任何人都可以提供有关此处发生的事情的任何线索吗?

2 个答案:

答案 0 :(得分:1)

好的,这是我的评论作为答案

这是一种解决方法,它无法解释为什么recordcount属性不能处理视图,但您可以使用SQL查询来计算行数,例如

Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT COUNT(*) as myrecordcount FROM myView;"
rs.Open sqlQuery, conn, 1, 2
response.write "q2 cnt = " & rs("myrecordcount")

答案 1 :(得分:-1)

您正在请求可编辑记录集,该记录集可能会在视图上失败。尝试打开默认的仅向前只读记录集

rs.Open sqlQuery, conn, adOpenForwardOnly, adLockReadOnly

rs.Open sqlQuery, conn, 0, 1