Timeout expired & AdoDB & RecordSet - VB

Узнай цену своей работы

Формулировка задачи:

добрый день! Подскажите пожалуйста - столкнулся с проблемой. Пытаюсь запустить хранимую процедуру из базы на MS Server 2008. На тестовой процедуре с простым созданием таблицы работает. А на процедуре, которая запускает внутри себя несколько других, выпадает в ошибку Timeout expired и ругается на строчку Set rsData = Cmd.Execute. На сервере все работает - время выполнения хранимой процедуры порядка 4ех часов. И как можно вывести время выполнения на форму? Заранее спасибо!
Листинг программы
  1. Dim Cmd As New ADODB.Command
  2. Dim rsData As New ADODB.Recordset
  3. Set Conn = Nothing
  4. Set Conn = New ADODB.Connection
  5. Conn.ConnectionTimeout = 0
  6. Conn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Server=...; Database=...;Workstation ID
  7. = ...;Trusted_Connection=False"
  8. If Conn.State = 1 Then
  9. MsgBox "Соединение установлено"
  10. Else
  11. MsgBox "Соединение не установлено"
  12. End If
  13. Cmd.ActiveConnection = Conn
  14. Cmd.CommandType = adCmdStoredProc
  15. Cmd.CommandText = "STest_new"
  16. Cmd.Parameters.Refresh
  17. Cmd.Parameters(1) = Combo1.Text
  18. Cmd.Parameters(2) = Combo1.Text + 1
  19. Text1.Text = Combo1.Text + 1
  20. Cmd.Parameters(3) = Combo1.Text + 2
  21. Text2.Text = Combo1.Text + 2
  22. Set rsData = Cmd.Execute
  23. Set rsData = Nothing

Решение задачи: «Timeout expired & AdoDB & RecordSet»

textual
Листинг программы
  1. Dim rs As ADODB.Recordset
  2. Dim cmd As ADODB.Command
  3. Set cmd = New ADODB.Command
  4. cmd.ActiveConnection = Connection
  5. cmd.CommandType = adCmdStoredProc
  6. cmd.CommandText = "mysp1"
  7. cmd.Parameters.Append cmd.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue)
  8. cmd.Parameters.Append cmd.CreateParameter("@Arg1", adSmallInt, adParamInput, , 1234)
  9. cmd.Parameters.Append cmd.CreateParameter("@Arg2", adBSTR, adParamInput, , "test string")
  10. cmd.Parameters.Append cmd.CreateParameter("@Arg3", adDate, adParamInput, , Now())
  11. cmd.Parameters.Append cmd.CreateParameter("@Result1", adBSTR, adParamOutput)
  12. cmd.Parameters.Append cmd.CreateParameter("@Result2", adBoolean, adParamOutput)
  13. Set rs = New ADODB.Recordset
  14. rs.CursorLocation = adUseClient
  15. rs.CursorType = adOpenStatic
  16. rs.LockType = adLockReadOnly
  17. rs.Open cmd
  18. If cmd.Parameters("RETURN_VALUE").Value < 0 Then
  19.   MsgBox "Процедура вернула ошибку" & vbNewLine & _
  20.          "Параметр Result1 равен: " & cmd.Parameters("@Result1").Value & vbNewLine & _
  21.          "Параметр Result2 равен: " & cmd.Parameters("@Result2").Value
  22. Else
  23.   MsgBox "Процедура отработала успешно. Получено строк: " rs.RecordCount & vbNewLine & _
  24.          "Параметр Result1 равен: " & cmd.Parameters("@Result1").Value & vbNewLine & _
  25.          "Параметр Result2 равен: " & cmd.Parameters("@Result2").Value
  26.   Do Until rs.EOF
  27.     Debug.Print "  - строка " & rs.AbsolutePosition & "; " & rs.Fields(0).Value
  28.     rs.MoveNext
  29.   Loop
  30. End If

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут