Невозможно запросить представление SQL

Я работаю на старом классическом сайте 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веб-страницы. То же самое, по-видимому, применимо ко всем таблицам и представлениям в БД (я проверил полдюжины из них).

Может ли кто-нибудь подсказать, что здесь происходит?

2 ответа

  1. Вы запрашиваете редактируемый набор записей, который может завершиться ошибкой в представлениях. Попробуйте открыть набор записей по умолчанию только для чтения

    rs.Open sqlQuery, conn, adOpenForwardOnly, adLockReadOnly
    

    или

    rs.Open sqlQuery, conn, 0, 1
    
  2. Хорошо, вот мой комментарий в качестве ответа

    Это обходной путь, он не объясняет, почему свойство 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")