powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баг Access+MS SQL 2008R2
5 сообщений из 5, страница 1 из 1
Баг Access+MS SQL 2008R2
    #39849782
Коллеги, прошу помощи!

Есть база 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. Проблема проявляется на нескольких таблицах с большим количеством данных.


Надеюсь на коллективный разум и ваши подсказки!

Спасибо!
...
Рейтинг: 0 / 0
Баг Access+MS SQL 2008R2
    #39849790
Соколов Валерий,

Только что всплыли новые обстоятельства:

Вставляю новую запись в основную таблицу (проблемную) Table, триггер отрабатывает и вставляет в лог_таблицу (Table_log) строчку,
Acces отображает запись из основной таблицы у которой Table.ID равен только что сформированному Table_log.ID в таблице логов!!!!
Т.е. Аccess похоже после cохранения записи получает новый ID для отображения не из основной таблицы, а из таблицы логов!

Пока не знаю что делать...
...
Рейтинг: 0 / 0
Баг Access+MS SQL 2008R2
    #39849869
Соколов Валерий,

изменил триггер на INSTEAD OF INSERT (т.е. выполнил вставку в лог ДО вставки строки в основную таблицу) - не помогло
...
Рейтинг: 0 / 0
Баг Access+MS SQL 2008R2
    #39849881
Соколов Валерий,
погуглив, нашел страницу с решением:
MS Access getting last insert id from @@IDENTITY with triggers

Решение автора - неудачное, но вот комментарий Alan заслуживает внимания:

Alan/* с моими правками */
Вначале триггера выполнить:
Код: sql
1.
2.
3.
declare @sql varchar(200)
set @sql = N'declare @insert_id_fix table (id bigint identity(' + cast(@@identity as varchar) + ',1) not null)
insert into @insert_id_fix default values'


В конце триггера выполнить:
Код: sql
1.
exec (@sql)


С уважением,
Павел
...
Рейтинг: 0 / 0
Баг Access+MS SQL 2008R2
    #39849937
Павел Фурсов,

Дай Бог тебе здоровья, добрый человек! :) Ты не представляешь сколько нервов было потрачено!

РЕШЕНО!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баг Access+MS SQL 2008R2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]