Коллеги, прошу помощи!
Есть база MS ACCESS 2010 SP2 + прилинкованные к ней таблицы MS SQL Server 2008 R2 (версия 10.50.1617.0)
Обмен через ODBC driver 11 for SQL Server
Есть таблица на MS SQL с числом записей около 700 000. На таблице висит триггер на insert - вставляет строчку в другую таблицу (логирование добавления записей)
Что происходит: открываю в Access таблицу, добавляю новую запись руками, перехожу на соседнюю запись что бы новая сохранилась и в этот момент на месте моей новой записи появляется произвольная существующая запись! Чисто визуально, на месте моей новой!
Потом я обновляю источник данных и вижу что моя новая запись есть и она сохранена. Т.е. натурально глюки!
Все тоже самое происходит при me.dirty=false если я делаю добавление записи руками через форму. после обновления записи на ее месте появляется произвольная запись!
Обращаю внимание, что requery источника данных не происходит! Т.е. это не типа обновился источник и другая запись отобразилась!
Что известно на данный момент:
1. Обновлял ODBC драйвер до 17 версии - не помогло
2. При отключении триггера проблема сразу исчезает! Но... триггер - проще некуда:
ALTER TRIGGER [dbo].[table_cdc_ins] ON [dbo].[table] AFTER INSERT AS
BEGIN
SET NOCOUNT ON;
insert cdc.[table]([cdc_op],[data]) select 1, [data] from inserted;
END
как только я убираю инструкцию insert из триггера - проблема исчезает. Нюанс в том, что вставка происходит в таблицу в другой схеме. Схему пока менять не пробовал.
3. В точности такой же триггер висит на других таблицах и к глюкам это не приводит! Но... в других таблицах меньшее количество строк. При удалении из проблемной таблицы половину данных - проблема исчезает! Ясное дело, что почистить таблицу я не могу как и не могу избавиться от триггера.
4. Сменить MS Access пока тоже не могу.
5. Проблема проявляется на нескольких таблицах с большим количеством данных.
Надеюсь на коллективный разум и ваши подсказки!
Спасибо!
https://www.sql.ru/forum/1315999/bag-access-ms-sql-2008r2