Форум программистов CodeGuru
20 Сентябрь 2018, 22:07:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отследить удаление записей в базе?  (Прочитано 20365 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Яна
Интересующийся
**
Офлайн Офлайн

Сообщений: 19


Просмотр профиля
« : 29 Июль 2005, 16:30:40 »

Такая вот проблема видимо не слабая. Есть файл dbf, к которому доступ с нескольких компьютеров. С ним работают с помощью DOS программы, но могут и непосредственно залезть, пропадают записи. Нужен такой журнал: с какой машины в какое время удалена такая-то запись, т.е. обработка события удаления записи- вернее пометки на удаление в Fox, т.е. фактически определённая её корректировка.
С помощью SetWindowsHookEx, наверное, это нельзя сделать? Обработка клавиатуры мало что даст...  Или через ODBC?   Не подскажете хоть какие-нибудь подходы?
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 30 Июль 2005, 01:12:47 »

Гм... а программа под DOS как работает ? Через что ?
Я имею ввиду, что для многопользовательской работы нужен
некий сервер.
Или файл просто читается из сетевого каталога, модифицируется и сохраняется (что последний сохранил, тот и молодец) ?

В любом случае общее решение - перекрыть доступ к файлу из сети,  слелать (найти готовую) программу-сервер для работы с БД (фактически SQL сервер получается, но используя те же ODBC его писать нетрудно будет).
И работать только через этот сервер.

Чем и хороши всякие SQL сервера (типа MS SQL Server, Oracle, и.т.д.) - там и аутентификация и логи...
Записан

Яна
Интересующийся
**
Офлайн Офлайн

Сообщений: 19


Просмотр профиля
« Ответ #2 : 01 Август 2005, 15:10:58 »


Цитировать
Или файл просто читается из сетевого каталога, модифицируется и сохраняется (что последний сохранил, тот и молодец) ?

Именно так, работает FoxPro2.6, никакого сервера нет. Машина, на которой база ,принадлежит другой организации, вообще-то мы не можем там ничего делать, проследить удаление записей надо с нашей машины, на которой стоит exeшник, сделанный на FoxPro2.6, но могут залезть и просто из Fox. Значит если не делать сервер, невозможно ничего отследить?
А по поводу написания сервера- где можно посмотреть пример какой-нибудь? Так, наверное, к нему и клиента писать надо, DOS программа не сможет с ним сама по себе работать, это просто свою программу писать надо или я всё неправильно понимаю?
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #3 : 04 Август 2005, 12:29:47 »

Цитировать
Именно так, работает FoxPro2.6, никакого сервера нет.

Гм, интересно...
Честно говоря, я не работал с досовским FoxPro, да и вообще с FoxPro работал мало Грустный  Но если так - машина в другой организации, может, все-таки FoxPro допускает создание сетевых версий приложений ?
То есть как то странно было бы допустить, что база перекачивается на комп к клиенту, изменяется и закачивается обратно. Значит, должен быть какой то сервер БД, наверно, на машине другой организации. Хотя, если даже и так - отследить работу с бзой разными средствами в общем случае трудновато (если вообще возможно). На клиентской машине можно поставить файрвол, в котором запретить для FoxPro работать с определенной машиной по определенному протоколу, а досовской проге - разрешить, но для этого надо запретить пользователю менять настройки файрволла административными средствами. Но тогда уж проще запретить использование FoxPro вообще.
Но, как показывает практика, самый надежный метод предотвращения несанкционированного доступа к БД - бить по рукам. Сильно Улыбка

А если серьезно - хорошо спроектированная БД (в классическом понимании) должна обеспечивать целостность данных при изменении ее любыми средствами - как из клиентских программ, так и из СУБД.

Не знаю, может ли это FoxPro...

Общие рекомендации примерно такие (т.к. больше всего работаю с MS SQL Server, то сразу извиняюсь за возможно СУБД-ориентированную терминологию Смущение ).

1. Всем пользователям, кроме админа (сервер БД должен, естесственно, поддерживать разграничение доступа, авторизацию, и.т.д.) доступ к таблицам перекрыть вообще.

2. Для доступа к данным (чтение) для разных групп пользователей создать представления (view). И определенным пользователям разрешать доступ только к определенным view.

3. Для изменения данных делать хранимые процедуры (опять же, определенным пользователям дается доступ только к определенным процедурам).

Это все применимо в рамках двухуровневой архитектуры.

Правда в Вашем случае (когда приложение уже есть) это мало поможет Грустный

Вот... Написал типа много, а конструктивно - ничего Плачу
Записан

Яна
Интересующийся
**
Офлайн Офлайн

Сообщений: 19


Просмотр профиля
« Ответ #4 : 08 Август 2005, 16:52:31 »

Цитировать
Вот... Написал типа много, а конструктивно - ничего

Спасибо, это всё равно полезно, я поняла , что не смогу этого сделать, а это уже результат.

Цитировать
Честно говоря, я не работал с досовским FoxPro

Везёт... А я вот с SQL сервером не работала и ни с чем подобным, у нас этого нет. Слышала, что в офис встроен SQL сервер, как работать с ним , правда, не знаю...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!