Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 remote query timeout (не отрабатывает установленное значение)  [new]
Kopilogus
Member

Откуда:
Сообщений: 49
Доброго времени суток!

Версия сервера SQL:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Установил значение remote query timeout:
sp_configure 'remote query timeout', 7200
go
reconfigure with override
go

Из внешнего приложения (1С 8.2) отправляю запрос через ADODB.Connection на сервер SQL.
Текст запроса - выполнение хранимой процедуры, которая из QA выполняется в течении 1 часа 40 минут (выполняется успешно).

В результате получаю "Query timeout expire" после 10 мин исполнения.
Гугл не помог :(

Есть у кого-нибудь идеи?
10 янв 12, 21:00    [11881437]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Kopilogus
Есть у кого-нибудь идеи?
Хелп внимательно читать.

ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_4deptrbl/html/1e574956-f1fa-4165-98f7-e1a3f1783703.htm
Use the remote query timeout option to specify how long, in seconds, a remote operation can take before Microsoft SQL Server times out. The default is 600, which allows a 10-minute wait. This value applies to an outgoing connection initiated by the Database Engine as a remote query. This value has no effect on queries received by the Database Engine.
10 янв 12, 21:04    [11881446]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Kopilogus
Member

Откуда:
Сообщений: 49
Видимо не понятно выразился..

Проблем с таймаутом в QA нет, на что написал, что в QA исполняется успешно, время выполнения - около 1 часа 40 минут.
По таймауту отваливается запрос из внешнего приложения.
10 янв 12, 21:09    [11881455]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
CommandTimeout Property (ADO)
10 янв 12, 21:10    [11881456]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Kopilogus
Member

Откуда:
Сообщений: 49
Код инициализации ADO из внешнего приложения (1С 8.2):

	Соединение  = Новый Структура;
	Connection	= Новый COMОбъект("ADODB.Connection");
	Command		= Новый COMОбъект("ADODB.Command"); 
	RecordSet	= Новый COMОбъект("ADODB.RecordSet");
	
	[b]Connection.CommandTimeOut = 9000[/b];
	Connection.Open(СтрокаПодключения);
	Command.ActiveConnection = Connection;  

	Соединение.Вставить("Connection", Connection);
	Соединение.Вставить("Command", Command);
	Соединение.Вставить("RecordSet", RecordSet);
10 янв 12, 21:12    [11881459]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Kopilogus
Видимо не понятно выразился..

Проблем с таймаутом в QA нет, на что написал, что в QA исполняется успешно, время выполнения - около 1 часа 40 минут.
По таймауту отваливается запрос из внешнего приложения.
У вас проблема с таймаутом в вашем приложении, а не в QA или сервере. Вот там его и устанавливайте, а не крутите первую же попавшуюся серверную настройку с знакомым словом в названии, к вашей проблеме никоим образом не относящуюся.
10 янв 12, 21:13    [11881463]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Kopilogus
Код инициализации ADO из внешнего приложения (1С 8.2):

	Соединение  = Новый Структура;
	Connection	= Новый COMОбъект("ADODB.Connection");
	Command		= Новый COMОбъект("ADODB.Command"); 
	RecordSet	= Новый COMОбъект("ADODB.RecordSet");
	
	[b]Connection.CommandTimeOut = 9000[/b];
	Connection.Open(СтрокаПодключения);
	Command.ActiveConnection = Connection;  

	Соединение.Вставить("Connection", Connection);
	Соединение.Вставить("Command", Command);
	Соединение.Вставить("RecordSet", RecordSet);

Command.CommandTimeOut = 9000
10 янв 12, 21:15    [11881468]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Об этом даже в хелпе написано:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms678265%28v=vs.85%29.aspx
The CommandTimeout setting on a Connection object has no effect on the CommandTimeout setting on a Command object on the same Connection; that is, the Command object's CommandTimeout property does not inherit the value of the Connection object's CommandTimeout value.
10 янв 12, 21:16    [11881474]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Kopilogus
Member

Откуда:
Сообщений: 49
Изменил на:

	Соединение  = Новый Структура;
	Connection	= Новый COMОбъект("ADODB.Connection");
	Command		= Новый COMОбъект("ADODB.Command"); 
	RecordSet	= Новый COMОбъект("ADODB.RecordSet");
	
	Command.CommandTimeOut = 9000;
	//Connection.CommandTimeOut = 9000;
	Connection.Open(СтрокаПодключения);
	Command.ActiveConnection = Connection;  
	Соединение.Вставить("Connection", Connection);
	Соединение.Вставить("Command", Command);
	Соединение.Вставить("RecordSet", RecordSet);


Проверяю.

Но насколько мне известно, таймауты по умолчанию на ADODB.Connection имеют значения 30 и 15 сек но никак не 10 мин, тут больше похоже на настройку сервера SQL...
10 янв 12, 21:24    [11881496]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Kopilogus
Но насколько мне известно, таймауты по умолчанию на ADODB.Connection имеют значения 30 и 15 сек но никак не 10 мин, тут больше похоже на настройку сервера SQL.
Еще раз, для нечитающих хелп: таймаут - это клиентская настройка, и прерывает по таймауту выполнение запроса клиент и никто более. А сервер знать не знает ни про какие таймауты, ему на них начхать.
10 янв 12, 21:26    [11881502]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
Kopilogus
Member

Откуда:
Сообщений: 49
Разобрался, вопрос снят.
Спасибо за помощь.
10 янв 12, 21:43    [11881577]     Ответить | Цитировать Сообщить модератору
 Re: remote query timeout (не отрабатывает установленное значение)  [new]
dred_d
Member

Откуда:
Сообщений: 25
Kopilogus
Разобрался, вопрос снят.
Спасибо за помощь.


Здравствуйте!

Поделитесь, пожалуйста, информацией как Вы решили проблему?
Я столкнулся фактически с аналогичной проблемой: отсылаю на выполнение хранимую процедуру из Delphi 7 на MS SQL Server. Она отрабатывает порядка 28 минут из Query Analyzer, а через Delphi отваливается ровно через 20 минут, при этом в компонентах, через которые вызываю выполнение хранимки установлено:
MSSQL.CommandTimeout := 0;
MSConnection.ConnectionTimeout := 0;

По ходу вопрос: может MSConnection.Options.DefaultLockTimeout поможет как-то с решением проблемы (по умолчанию оно = 2000)?

Запрос отваливается каждый раз ровно через 20 мин. после начала выполнения.
27 апр 12, 12:34    [12479038]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить