2013-07-10 2 views
3

Я пытаюсь открыть запрос, который отключается. Я попытался установить свойство тайм-аута, но он, похоже, не хочет его принимать.Тайм-аут запроса ADODB

Задание занимает 34 секунды для выполнения с использованием окна управления MS-SQL Server (SQL Server 2005), поэтому я знаю, что мне нужно увеличить таймаут.

Текущий код:

Public Function retRecordSet(StrSQL) 
Dim cmd ' as new ADODB.Command 
Dim rs 'As New ADODB.Recordset 

Set cmd = CreateObject("ADODB.Command") 
Set rs = CreateObject("ADODB.Recordset") 

cmd.ActiveConnection = CurrentProject.Connection 
cmd.CommandText = StrSQL 
cmd.CommandTimeout = 0 
Set rs = cmd.Execute 

Set retRecordSet = rs 
End Function 

Я также попытался установить тайм-аут самого соединения CurrentProject.Connection.CommandTimeout = 120, но если я запрашиваю значение сразу после этой команды, он остается на 30

Свойства соединения:

Поставщик = Microsoft.Access.OLEDB.10.0; Persist Security Info = False; Источник данных = MyServer; Встроенная безопасность = SSPI; Начальный каталог = MyDatabase; Поставщик данных = SQLOLEDB.1

Data Source Object Threading Model = 1 
Multiple Results = 3 
Multiple Parameter Sets = False 
SQL Support = 283 
Catalog Location = 1 
Catalog Term = database 
Catalog Usage = 15 
Rowset Conversions on Command = True 
Extended Properties = 
Cache Authentication = True 
Encrypt Password = 
Persist Encrypted = 
Persist Security Info = False 
Asynchronous Processing = 0 
Connect Timeout = 600 
Protection Level = 
Prompt = 4 
Mode = 
Location = 
Locale Identifier = 1033 
Impersonation Level = 
Window Handle = 
Data Source = MyServer 
User ID = 
Password = 
Integrated Security = SSPI 
Mask Password = 
Initial Catalog = MyDatabase 
Lock Owner = 
Bind Flags = 
General Timeout = 0 
Data Provider = SQLOLEDB.1 
Autocommit Isolation Levels = 4096 
Unique Reshape Names = False 
+3

Взгляните на этом блоге: http://codingjourney.blogspot.com/ 2008/11/ado-connection-timeout-command-or.html – HK1

+1

@ HK1, вы увидите, что я установил тайм-аут команды в команде ADODB на 0 (бесконечный тайм-аут) – SeanC

+0

Не уверен, почему 30-секундный тайм-аут остается, кажется очень странный. Что произойдет, если вы вызываете 'rs.open cmd' вместо 'set rs = cmd.execute', передавая в свой объект команды в качестве источника. Просто любопытно, если вы столкнетесь с тем же вопросом там? – Fink

ответ

0

Для OLEDB Вам не нужно указать timout на связи: -

Provider = Microsoft.Access.OLEDB.10.0; Упорство Security Info = False; Data Source = MyServer; Integrated Security = SSPI; Initial Catalog = MyDatabase; Поставщик данных = SQLOLEDB.1; Connect Timeout = 30

12

Не уверен, что, если у вас уже есть над проблемой, но я была та же проблема. Я делаю это с Recordset.Open SQL_String, Connection.

А до этого я просто установить свойство тайм-аут, а не на Recordset или команды, но на объекте Connection:

Connection.CommandTimeout = 0 
Смежные вопросы