Timeout expired & AdoDB & RecordSet - VB
Формулировка задачи:
добрый день! Подскажите пожалуйста - столкнулся с проблемой. Пытаюсь запустить хранимую процедуру из базы на MS Server 2008. На тестовой процедуре с простым созданием таблицы работает. А на процедуре, которая запускает внутри себя несколько других, выпадает в ошибку Timeout expired и ругается на строчку Set rsData = Cmd.Execute. На сервере все работает - время выполнения хранимой процедуры порядка 4ех часов. И как можно вывести время выполнения на форму? Заранее спасибо!
Листинг программы
- Dim Cmd As New ADODB.Command
- Dim rsData As New ADODB.Recordset
- Set Conn = Nothing
- Set Conn = New ADODB.Connection
- Conn.ConnectionTimeout = 0
- Conn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Server=...; Database=...;Workstation ID
- = ...;Trusted_Connection=False"
- If Conn.State = 1 Then
- MsgBox "Соединение установлено"
- Else
- MsgBox "Соединение не установлено"
- End If
- Cmd.ActiveConnection = Conn
- Cmd.CommandType = adCmdStoredProc
- Cmd.CommandText = "STest_new"
- Cmd.Parameters.Refresh
- Cmd.Parameters(1) = Combo1.Text
- Cmd.Parameters(2) = Combo1.Text + 1
- Text1.Text = Combo1.Text + 1
- Cmd.Parameters(3) = Combo1.Text + 2
- Text2.Text = Combo1.Text + 2
- Set rsData = Cmd.Execute
- Set rsData = Nothing
Решение задачи: «Timeout expired & AdoDB & RecordSet»
textual
Листинг программы
- Dim rs As ADODB.Recordset
- Dim cmd As ADODB.Command
- Set cmd = New ADODB.Command
- cmd.ActiveConnection = Connection
- cmd.CommandType = adCmdStoredProc
- cmd.CommandText = "mysp1"
- cmd.Parameters.Append cmd.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue)
- cmd.Parameters.Append cmd.CreateParameter("@Arg1", adSmallInt, adParamInput, , 1234)
- cmd.Parameters.Append cmd.CreateParameter("@Arg2", adBSTR, adParamInput, , "test string")
- cmd.Parameters.Append cmd.CreateParameter("@Arg3", adDate, adParamInput, , Now())
- cmd.Parameters.Append cmd.CreateParameter("@Result1", adBSTR, adParamOutput)
- cmd.Parameters.Append cmd.CreateParameter("@Result2", adBoolean, adParamOutput)
- Set rs = New ADODB.Recordset
- rs.CursorLocation = adUseClient
- rs.CursorType = adOpenStatic
- rs.LockType = adLockReadOnly
- rs.Open cmd
- If cmd.Parameters("RETURN_VALUE").Value < 0 Then
- MsgBox "Процедура вернула ошибку" & vbNewLine & _
- "Параметр Result1 равен: " & cmd.Parameters("@Result1").Value & vbNewLine & _
- "Параметр Result2 равен: " & cmd.Parameters("@Result2").Value
- Else
- MsgBox "Процедура отработала успешно. Получено строк: " rs.RecordCount & vbNewLine & _
- "Параметр Result1 равен: " & cmd.Parameters("@Result1").Value & vbNewLine & _
- "Параметр Result2 равен: " & cmd.Parameters("@Result2").Value
- Do Until rs.EOF
- Debug.Print " - строка " & rs.AbsolutePosition & "; " & rs.Fields(0).Value
- rs.MoveNext
- Loop
- End If
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д