Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

операцията не е разрешена, когато обектът е затворен, когато се изпълнява по-разширена заявка

Това е често срещан проблем, причинен от това, че броят на редовете се интерпретира като изход от съхранена процедура при използване на ADODB със SQL Server.

За да избегнете това, не забравяйте да зададете

SET NOCOUNT ON;

във вашата Съхранена процедура това ще спре ADODB да връща затворен набор от записи или ако по някаква причина не искате да правите това (не съм сигурен защо, тъй като винаги можете да използвате @@ROWCOUNT за да прехвърлите броя на редовете назад), можете да използвате

'Return the next recordset, which will be the result of the Stored Procedure, not 
'the row count generated when SET NOCOUNT OFF (default).
Set rs = rs.NextRecordset()

който връща следващия ADODB.Recordset ако ADODB е открил, че такъв се връща от Съхранената процедура (може би е най-добре да проверите rs.State <> adStateClosed когато работите с множество ADODB.Recordset обекти).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкнете стойност в колона за идентичност ръчно в таблица на SQL Server - SQL Server / T-SQL урок, част 41

  2. Динамично задайте име на файл към низа за връзка в excel

  3. Вътрешни елементи на седемте сорта SQL сървъри – част 2

  4. Преобразуването не бе успешно при преобразуване на стойността на varchar 'simple' в тип данни int

  5. Групи за наличност на SQL Server AlwaysOn:Инсталиране и конфигуриране. Част 2