无法查询 SQL 视图
Unable to query SQL view
我正在处理一个古老的经典 ASP 站点,运行 遇到了问题。我可以查询数据库 tables 但不能查询视图。
此查询 table return 的正确行数:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM tblContent;"
rs.Open sqlQuery, conn, 1, 2
response.write "q1 cnt = " & rs.RecordCount
视图上的相同查询 returns -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,两者都查询 return 正确的行数,但只有一个在从 .asp
网页调用时有效。这似乎适用于数据库中的所有 table 和视图(我已经测试了其中的六个)。
任何人都可以提供任何关于这里发生的事情的线索吗?
您正在请求可编辑的记录集,该记录集在查看时可能会失败。尝试打开默认的只进只读记录集
rs.Open sqlQuery, conn, adOpenForwardOnly, adLockReadOnly
或
rs.Open sqlQuery, conn, 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")
我正在处理一个古老的经典 ASP 站点,运行 遇到了问题。我可以查询数据库 tables 但不能查询视图。
此查询 table return 的正确行数:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM tblContent;"
rs.Open sqlQuery, conn, 1, 2
response.write "q1 cnt = " & rs.RecordCount
视图上的相同查询 returns -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,两者都查询 return 正确的行数,但只有一个在从 .asp
网页调用时有效。这似乎适用于数据库中的所有 table 和视图(我已经测试了其中的六个)。
任何人都可以提供任何关于这里发生的事情的线索吗?
您正在请求可编辑的记录集,该记录集在查看时可能会失败。尝试打开默认的只进只读记录集
rs.Open sqlQuery, conn, adOpenForwardOnly, adLockReadOnly
或
rs.Open sqlQuery, conn, 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")