SQL Запрос из 1С через ADODB.Command

1. user950765 09.07.24 10:50 Сейчас в теме
Пытаюсь выполнить SQL запрос из внешней обработки

Connection  = Новый COMОбъект("ADODB.Connection");
Command  = Новый COMОбъект("ADODB.Command");

Connection.Open отрабатывает нормально, далее делаю
Command.CommandText = "truncate table [dbo].[_InfoRg81830]";
Command.Execute();
Command.CommandText = СтрШаблон("dbcc Shrinkdatabase (%1)",ИмяБазы);
Command.Execute();


Вот первый execute отрабатывает, а на втором вываливается :

{ВнешняяОбработка.[ИмяОбработки].Форма.Форма.Форма(62)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver]Истекло время ожидания запроса
По теме из базы знаний
Найденные решения
4. KirillZ44 12 09.07.24 11:44 Сейчас в теме
Попробуйте установить свойство CommandTimeout в значение, отличное от стандартного. Если верить документации, значение по умолчанию - 30 секунд. Возможно, в вашем случае запрос отрабатывается дольше.

При создании аналогичного запроса и установки свойства CommandTimeout в значение 1, получаю ту же самую ошибку, что и у вас. При установки в значение 0, что, согласно документации, позволяет ждать ответа без ограничений, запрос выполняется.

cmd = Новый COMОбъект("ADODB.Command");
cmd.CommandTimeout = 0; // Нужное значение таймаута
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1619761 09.07.24 10:53 Сейчас в теме
(1)
Connection = Новый COMОбъект("ADODB.Connection");
Command = Новый COMОбъект("ADODB.Command");

Connection.Open отрабатывает нормально, далее делаю
Command.CommandText = "truncate table [dbo].[_InfoRg81830]";
Command.Execute();

Connection = Новый COMОбъект("ADODB.Connection");
Command = Новый COMОбъект("ADODB.Command");
Connection.Open;

Command.CommandText = СтрШаблон("dbcc Shrinkdatabase (%1)",ИмяБазы);
Command.Execute();
Показать
так попробуйте, на втором запросе ошибка возникнет в этом случае?
3. user950765 09.07.24 11:00 Сейчас в теме
Ошибка та же осталась.
4. KirillZ44 12 09.07.24 11:44 Сейчас в теме
Попробуйте установить свойство CommandTimeout в значение, отличное от стандартного. Если верить документации, значение по умолчанию - 30 секунд. Возможно, в вашем случае запрос отрабатывается дольше.

При создании аналогичного запроса и установки свойства CommandTimeout в значение 1, получаю ту же самую ошибку, что и у вас. При установки в значение 0, что, согласно документации, позволяет ждать ответа без ограничений, запрос выполняется.

cmd = Новый COMОбъект("ADODB.Command");
cmd.CommandTimeout = 0; // Нужное значение таймаута
5. user950765 09.07.24 14:03 Сейчас в теме
(4)
CommandTimeout

Спасибо! Это помогло!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот