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

Откуда:
Сообщений: 7
Использую MS Server 2008 express и C#

Есть 2 таблицы PersonalAccount - хранит данные о состоянии "счета" в частности значение "баланса"
и 2-я таблица Transactions в нее записываются все действия по изменению полей в таблице PersonalAccount
подразумевается что эти действия с Бд могут выполняться "одновременно" из разных программ
все действия по инициативе оператора(на кнопку надо нажать) Пока одновременно ничего не делалось.

Код в конце.
Записи в таблицу с транзакциями добавляются отлично а вот с обновлением существующего значения в таблице счетов проблемы

Проблема: - периодически записи не обновляются, т.е. транзакция пишется баланс вычисляется правильный, но в базу он не попадает т.е. обновления нет. При этом в следующий раз все происходит нормально причем несколько раз, а потом опять перестает обновляться несколько раз и т.д.
исключений не происходит

В чем может быть дело?
Поможет ли если написать хранимую процедуру для этого?

Balance = Value;
            worksDataSet.PersonalAccountRow newpaccrow = worksDataSet.PersonalAccount.FindByPAccountNo(PersonalRows[0].PAccountNo);
            newpaccrow.CurrentBalance = (float)Balance; 
            // Add Transaction record
            worksDataSet.Transactions.AddTransactionsRow(newTransRow);
          
            // Обновить информацию в базе данных
            try
            {
                try
                {
 
                    personalAccountTableAdapter1.Update(worksDataSet.PersonalAccount);
                    worksDataSet.PersonalAccount.AcceptChanges();
                }
                catch (DBConcurrencyException dbe)
                {
                    label34.Text = "PersAccount parallelizm err"+dbe.Message;
                    dbe.Row.AcceptChanges();
                }
                try
                {
                    transactionsTableAdapter1.Update(worksDataSet.Transactions);
                }
                catch (DBConcurrencyException dbe)
                {
                    label35.Text = "Transactions parallelizm err" + dbe.Message;
                    dbe.Row.AcceptChanges();
                }
            }
            catch (Exception ex)
            {
                label36.Text = "General DB exeption ";
                lblWarning.Visible = true;
                lblWarning.Text += ex.Message + "\n";
                return (-6666);
            }


Сообщение было отредактировано: 21 май 14, 17:51
21 май 14, 16:03    [16049811]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
Harier
В чем может быть дело?

В том, что ваш код не обрабатывает ошибки, например
Или не завершает транзакции
21 май 14, 16:07    [16049864]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Harier
Member

Откуда:
Сообщений: 7
Ошибок в виде исключений нет(обработки нет я их просто отслеживаю пока и пытаюсь понять где искать)
как еще можно узнать о других ошибках?

Насчет завершения транзакции - как это отследить?

Поясню я не специалист по базам данных а данная система пишется для себя в личных целях
21 май 14, 17:21    [16050520]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
Harier
Ошибок в виде исключений нет

Откуда такая уверенность ?
Вы отслеживали все события на сервере ?

Harier
Насчет завершения транзакции - как это отследить?

Писать серверные процедуры
21 май 14, 17:26    [16050550]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Harier
Member

Откуда:
Сообщений: 7
Настроил в SQL server отслеживание изменений в таблице, но не могу найти место где их можно после этого увидеть
В журнал смотрел, там эти события не отражаются, хотя данные меняются.

Сейчас работаю только с одним приложением - ситуация улучшилась, пока пропусков не было.
22 май 14, 08:46    [16052423]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
Harier
Настроил в SQL server отслеживание изменений в таблице, но не могу найти место где их можно после этого увидеть
В журнал смотрел, там эти события не отражаются, хотя данные меняются

А что, в том месте где вы "настроил отслеживание", не сказано, гдн искать результаты отслеживания ?
22 май 14, 10:36    [16052949]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Harier
Member

Откуда:
Сообщений: 7
Настроил в Management Studio:
правой кнопкой на названии базы - свойства, раздел "отслеживание" и те-же действия с конкретной таблицей
справку прочитал но ничего не понял. Предположил что изменения хранятся в какой то системной базе
но баз этих много эмпирический(наугад по названиям) поиск мне ничего не дал
Интересно конечно бы узнать где все таки эти изменения можно отслеживать

По сути вопроса:
тут дело в том похоже что взаимодействие с MS SQL S идет через сеть, т к в похожих проектах которые выполняются "локально" т.е на этом же компьютере где и сервер. Похожих проблем нет.
А здесь компьютеры находятся в разных сегментах сети (0.ххх и 1.ххх) соединяются они через компьютер достаточно старый на котором еще выполняется много дополнительных работ. Отсюда возможно и "хаотичность" ошибки

Способ борьбы с этим было бы интересно узнать

Т.е. надо как то "надежно" узнавать о том что операция точно завершена?

Пока поднастроили сеть и все работает гораздо лучше но все таки пропуски бывают иногда.
28 май 14, 06:08    [16083195]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
Harier
Способ борьбы с этим было бы интересно узнать

Т.е. надо как то "надежно" узнавать о том что операция точно завершена?
Читать про транзакции до полного понимания.
28 май 14, 09:12    [16083374]     Ответить | Цитировать Сообщить модератору
 Re: Хаотичное неизменение значения записи в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
Harier
правой кнопкой на названии базы - свойства, раздел "отслеживание" и те-же действия с конкретной таблицей
справку прочитал но ничего не понял.

Change tracking - это не мониторинг и не аудит

Harier
Предположил что изменения хранятся в какой то системной базе
но баз этих много эмпирический(наугад по названиям) поиск мне ничего не дал

Вам нужна не история изменений, а мониторинг событий на сервере. Для поиска ошибок.

Harier
Т.е. надо как то "надежно" узнавать о том что операция точно завершена?

Если на сервере возникает ошибка, то сервер об этом вам сообщает.
А если вы не подтверждаете транзакцию, то это бага вашего кода
28 май 14, 09:40    [16083463]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить