Вторник, 07.05.2024, 08:22
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Основной » Проблемные ситуации » Подбор и обработка объектов. Удалить через СУБД
Подбор и обработка объектов. Удалить через СУБД
yasnovidyashiiДата: Понедельник, 04.03.2024, 15:37 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн
Впервые пользуюсь удалением через СУБД. Но так как это копия базы, а записей в регистре сведений очень много (под 2 миллиона), решил попробовать.

Примерно через 5 минут после нажатия на кнопку "Удалить через СУБД" получаю ошибку:

Код
Ошибка при вызове метода контекста (Open)
{ОбщийМодуль.ирОбщий.Модуль(28473)}:            РезультатЗапроса.Open(ТекстЗапроса, СоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(378)}:    КолонкиКандидатов = ирОбщий.ВыполнитьЗапросЭтойСУБДЛкс(ТекстПоискаИмениВТ,,,,,, мСоединениеСУБД);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(298)}:        УдалитьОбъектыЧерезСУБД(Запрос, ИмяТаблицы,, ИмяТаблицыКлючей, ТекстСУБД, ОтключенныеИтоги);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло






Добавлено (04.03.2024, 15:43)
---------------------------------------------
И еще. В каком случае доступен выбор количества потоков обработки объектов? При выполнении на сервере?
Чекбокс "Выполнять на сервере" в моем случае недоступен, несмотря на то, что ИР установлены в режиме "Конфигурация", а в описании чекбокса написано, что функция недоступна в портативном варианте.
Прикрепления: 3004740.png (18.9 Kb)


Сообщение отредактировал yasnovidyashii - Понедельник, 04.03.2024, 15:44
 
tormozitДата: Понедельник, 04.03.2024, 16:00 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
Цитата
Инструменты разработчика. Асинхронность запрещена: Да
Либо сеанс запущен с параметром запрета асинхронности.
Либо она автоматически отключена кодом ИР из-за проявления ошибки платформы. Тогда ИР выводит соответствующее сообщение.
 
tormozitДата: Понедельник, 04.03.2024, 16:01 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
Обработка "Удалить через СУБД" выполняется через собственный механизм и не использует многопоточность.
 
yasnovidyashiiДата: Понедельник, 04.03.2024, 16:05 | Сообщение # 4
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн

Цитата
Обработка "Удалить через СУБД" выполняется через собственный механизм и не использует многопоточность.

Вопрос про многопоточность звучал отдельно от "Удаления через СУБД". Оно в целом недоступно.
 
tormozitДата: Понедельник, 04.03.2024, 19:53 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
В консоли запросов ИР в запросе ADO подключись к собственной базе 1С кнопкой "Эта БД".
Выполни запросы
1. select count(*) from tempdb.sys.tables
2. select count(*) from tempdb.sys.columns
Желательно делать это сразу после возникновения ошибки, если она не стабильно появляется.

Прикрепления: 3065823.png (30.1 Kb)
 
yasnovidyashiiДата: Вторник, 05.03.2024, 08:31 | Сообщение # 6
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн
Цитата
Либо сеанс запущен с параметром запрета асинхронности.
Либо она автоматически отключена кодом ИР из-за проявления ошибки платформы. Тогда ИР выводит соответствующее сообщени

Вероятнее всего второе. Сообщение было, но только в первый раз. По ссылкам в сообщении не переходил, так что пока не очень в курсе, что именно за ошибка платформы. На данный момент возникает уже другая ошибка:

Код
Ошибка при вызове метода контекста (Open)
{ОбщийМодуль.ирОбщий.Модуль(28477)}:            РезультатЗапроса.Open(ТекстЗапроса, СоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(411)}:    ирОбщий.ВыполнитьЗапросЭтойСУБДЛкс(ТекстСУБД,,,,,, мСоединениеСУБД);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(298)}:        УдалитьОбъектыЧерезСУБД(Запрос, ИмяТаблицы,, ИмяТаблицыКлючей, ТекстСУБД, ОтключенныеИтоги);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Invalid column name '_Q_000_F_000_TYPE'.


Цитата
1. select count(*) from tempdb.sys.tables
2. select count(*) from tempdb.sys.columns

1. 5 636
2. 48 717
 
tormozitДата: Вторник, 05.03.2024, 08:52 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
Покажи в консоли кластера серверов 1С сколько времени удерживается твое соединение СУБД
 
yasnovidyashiiДата: Вторник, 05.03.2024, 09:13 | Сообщение # 8
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн
Цитата
Покажи в консоли кластера серверов 1С сколько времени удерживается твое соединение СУБД

Это который из многочисленных параметров соединения нужен? Не очень понял просьбу.
Сегодняшняя ошибка, если что, возникает практически сразу после согласия со всеми предупреждениями. В пределах 10 секунд.
 
tormozitДата: Среда, 06.03.2024, 23:02 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
По ошибке "Invalid column name '_Q_000_F_000_TYPE' нужен текст из переменной ТекстЗапроса, полное имя таблицы регистра и все колонки его таблицы с типами.
 
tormozitДата: Среда, 06.03.2024, 23:08 | Сообщение # 10
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
Цитата yasnovidyashii ()
который из многочисленных параметров соединения нужен?
Захвачено СУБД

Прикрепления: 2747546.png (3.7 Kb)
 
yasnovidyashiiДата: Четверг, 07.03.2024, 09:35 | Сообщение # 11
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн
Цитата tormozit ()
По ошибке "Invalid column name '_Q_000_F_000_TYPE' нужен текст из переменной ТекстЗапроса, полное имя таблицы регистра и все колонки его таблицы с типами.

ТекстЗапроса =

Код
CREATE TABLE #tt3(
      [_Q_001_F_000RRef] BINARY(16) NULL
    , [_Q_001_F_001RRef] BINARY(16) NULL
    , [_Q_001_F_002RRef] BINARY(16) NULL
    , [_Q_001_F_003RRef] BINARY(16) NULL
)
;
exec sp_executesql N'INSERT INTO #tt3 WITH(TABLOCK) (_Q_000_F_000_TYPE, _Q_000_F_000_RTRef, _Q_000_F_000_RRRef, _Q_000_F_001) SELECT
T1._Fld22345_TYPE,
T1._Fld22345_RTRef,
T1._Fld22345_RRRef,
T1._Fld22346
FROM dbo._InfoRg22344 T1 WITH(NOLOCK)
WHERE (T1._Fld22349 < @P1)',N'@P1 datetime2(3)','2024-02-01 00:00:00'

По поводу имени таблицы и его колонок, из инструмента "Структура хранения БД" (закладка Поля) вытащил вот такое.
Но колонка с типами тут пустая.



Поэтому эту часть попробую решить вот так.



Цитата tormozit ()
Захвачено СУБД

Так понимаю, это будет актуально, если изначальная ошибка "время ожидания запроса истекло".
Прикрепления: 8978209.png (17.1 Kb) · 3033504.png (68.4 Kb)
 
yasnovidyashiiДата: Четверг, 07.03.2024, 09:58 | Сообщение # 12
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн
P.S. Самый "сложный" тип у измерения Объект. Из Конфигуратора он выглядит, как СправочникСсылка, ДокументСсылка.

Прикрепления: 4154026.png (5.8 Kb)
 
tormozitДата: Четверг, 07.03.2024, 22:20 | Сообщение # 13
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
Причину ошибки нашел https://www.hostedredmine.com/issues/981927
 
tormozitДата: Понедельник, 11.03.2024, 00:07 | Сообщение # 14
Генералиссимус
Группа: Администраторы
Сообщений: 6188
Репутация: 159
Статус: Оффлайн
Исправлено в 7.18
 
yasnovidyashiiДата: Понедельник, 11.03.2024, 11:30 | Сообщение # 15
Лейтенант
Группа: Пользователи
Сообщений: 67
Репутация: 84
Статус: Оффлайн
Цитата tormozit ()
Исправлено в 7.18

Теперь вот такая возникает:

Код
Не удалось найти временную таблицу в СУБД
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(403)}:        ВызватьИсключение "Не удалось найти временную таблицу в СУБД";
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(298)}:        УдалитьОбъектыЧерезСУБД(Запрос, ИмяТаблицы,, ИмяТаблицыКлючей, ТекстСУБД, ОтключенныеИтоги);


 
Форум » Основной » Проблемные ситуации » Подбор и обработка объектов. Удалить через СУБД
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: