Приветсвую тебя, ALL !!!
Возникла у меня такая задача, хранение вставленных и измененных записей на SQL сервере в отдельном файле на случай потери данных в энергозависимой памяти. Для того,
Вот почему мне приходится это делать: основная база хранится на энергозависимой памяти и занимает значительное место, которого в энергозависимой памяти КПК к сожалению нет. Пришла в голову мысль, можно где-нибудь хранить копию данных (не важно где, например на обычном компе) и журнал вносимых изменений, который уже не такой большой и хранится на энергонезависимой памяти.
Как считает алл, как можно наилучшим способом решить эту проблему. Интересны и решения, предполагающие смену базы данных. Может, кто-то уже сталкивался с такой задачей как ее решить, возможно, без применения такого журнала. Как лучше защититься от потери данных на КПК?
Разрабатываю на для .NET Compact Framework 1.0, MS SQL Server CE 2.0
Журналируются записи в обработчике события RowUpdated DataAdapter`а, вот как приблизительно это выглядит:
private void _dataAdapter_RowUpdated(object sender, SqlCeRowUpdatedEventArgs e)
{
if(e.Status == UpdateStatus.Continue)
{
if(e.StatementType == StatementType.Insert)
TransactionLog.Instance.InsertRow(e.Row);
else if(e.StatementType == StatementType.Update)
TransactionLog.Instance.UpdateRow(e.Row);
else if(e.StatementType == StatementType.Delete)
TransactionLog.Instance.DeleteRow(e.Row);
}
}
а такой получается лог:
a;2;24;1/19/2006 12:21:44 PM;12;3;False;
a;3;24;1;0;0;0;
a;3;24;2;0;0;0;
Все замечательно до тех пор, пока этот журнал не нужно развернуть обратно на сервер, тут возникают проблемы с identity колонками и ссылочной целостностью связанных записей (при вставке записи сервер может сгенерировать другое значение identity поля, и тогда начинаются проблемы с ссылочной целостностью, а следить за этим в коде с большим количеством ссылок получается не очень сподручно, уже пытался)
Что делать и в том ли я направлении двигаюсь, подскажи ALL.