Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как программно протестировать структуру базы данных ? / 15 сообщений из 15, страница 1 из 1
27.02.2014, 18:02
    #38574565
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
Исходные данные:
1. Допустим есть пустая бд или её описание в любом виде (например txt файл) (Эталон)
2. Есть рабочая бд с данными.
Задача:
Нужно программно найти изменения структуры в рабочей бд относительно Эталона (типы полей, количество полей в таблицах, удаленные (измененные) связи в схеме данных).
Цель:
Выявить действия злоумышленников.
Решения:
- идеальное: это если просто сравнивать рабочий и эталонный mdb
- приемлемое: это получить и хранить описание эталона в каком то виде, а потом сравнивать его с рабочей бд

Заранее всем спасибо.
...
Рейтинг: 0 / 0
27.02.2014, 18:32
    #38574596
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
Есть коллекция TableDefs - перебирайте её мемберов, отбрасывая системные, и фиксите все её свойства.
...
Рейтинг: 0 / 0
27.02.2014, 20:52
    #38574722
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
Стандартные мощные сравняторы схем и данных гнушаются эмдебе?
...
Рейтинг: 0 / 0
28.02.2014, 21:37
    #38575702
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
П-Л,
а можно хоть название таких средств в пример привести? Нашел только mdb_compare но оно как то слабовато и схему данных совсем не проверяет...
...
Рейтинг: 0 / 0
28.02.2014, 21:46
    #38575706
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
Akina, а можно примерчик строчек на 10, например для конкретной таблицы (цикл по свойствам с выводом их в msgbox)? А то у меня какая то фигня получилась - выводит какие то крестики нолики...
Private Sub Кнопка0_Click()
Dim i As Long
Dim j As Long
Dim bd As Database
Dim rs As TableDef
Set bd = CurrentDb()
Set rs = bd.TableDefs("Таблица1")
i = rs.Properties.Count
For j = 0 To i
MsgBox rs.Properties.Item(j)
Next j
End Sub
...
Рейтинг: 0 / 0
28.02.2014, 21:51
    #38575707
бут
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
vmagAkina, а можно примерчик строчек на 10, например для конкретной таблицы (цикл по свойствам с выводом их в msgbox)? А то у меня какая то фигня получилась - выводит какие то крестики нолики...
Private Sub Кнопка0_Click()
Dim i As Long
Dim j As Long
Dim bd As Database
Dim rs As TableDef
Set bd = CurrentDb()
Set rs = bd.TableDefs("Таблица1")
i = rs.Properties.Count
For j = 0 To i
MsgBox rs.Properties.Item(j)
Next j
End Sub

афигеешь на правый (ежлив он -ё) баттон нажжжжимать
..)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
30.07.2021, 15:31
    #40087360
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
vmag
Исходные данные:
1. Допустим есть пустая бд или её описание в любом виде (например txt файл) (Эталон)
2. Есть рабочая бд с данными.
Задача:
Нужно программно найти изменения структуры в рабочей бд относительно Эталона (типы полей, количество полей в таблицах, удаленные (измененные) связи в схеме данных).
Цель:
Выявить действия злоумышленников.
Решения:
- идеальное: это если просто сравнивать рабочий и эталонный mdb
- приемлемое: это получить и хранить описание эталона в каком то виде, а потом сравнивать его с рабочей бд


Сам нарыл, ларчик просто открывается...
Рыл не долго (хоть и 7 лет прошло), просто опять понадобилось... таки если hdd пылит, связи могут пропадать и после сжатия- восстановления не восстанавливаться... минимальный трабл - всё работает, но с непонятными тормозами...
- ну во-первых, изменения полей не существенно, если некто поковырялся (или само ёк), то лишнее на интерфейс не влияет, а недостающее вылезет в виде ошибки в интерфейсе или отчете...
- а вот со связями всё просто:
Вот так получаем названия связей
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Кнопка0_Click()
Dim db As DAO.Database
    Dim totalRelations As Integer
    Dim i As Integer
    Set db = CurrentDb()
    totalRelations = db.Relations.Count
    If totalRelations > 0 Then
        For i = totalRelations - 1 To 0 Step -1
            MsgBox (db.Relations(i).Name)
        Next i
    End If
End Sub


Кстати они ни о чем, ибо могут меняться при профилактике БД, и меньшая часть их именована именами двух таблиц (см. последний столбец на картинке)
НО!
Лежит это всё хозяйство здесь: MSysRelationships
1. Выводим в доп. таблицу (или txt) содержимое этой таблицы из эталонной бд с сортировкой по полям (достаточно четырех: кто с кем и по каким полям) - отмечены галками...
2. Теперь достаточно тупо сравнить содержимое рабочей MSysRelationships с содержимым от эталонной бд
...
Рейтинг: 0 / 0
30.07.2021, 15:42
    #40087366
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
vmag,

Это хорошо, если вы используете схему данных.
многие её не использую(я в том числе).
...
Рейтинг: 0 / 0
30.07.2021, 16:09
    #40087379
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
Кстати, поле grbit это тип связи:
4352 - по полной (целостность + каскадные удаления и обновления)
2 - это просто связь без целостности
256 - это целостность только с каскадным изменением
ну и т.д.
...
Рейтинг: 0 / 0
30.07.2021, 16:12
    #40087380
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
ROI
многие её не использую(я в том числе).

Это плохо...
соответственно...
...
Рейтинг: 0 / 0
30.07.2021, 16:38
    #40087391
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
а штатное "средство документирования базы данных"(архивариус) .Провести её анализ после начала использования (это и будет эталон). Сравнивать глазками. Не....
А вообще backup (который,в разумных пределах,надо делать часто)никто не отменял
...
Рейтинг: 0 / 0
30.07.2021, 16:55
    #40087394
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
sdku
Сравнивать глазками. Не....


vmag
2. Теперь достаточно тупо сравнить содержимое рабочей MSysRelationships с содержимым от эталонной бд

кто ж такие вещи глазками делает?
нажал кнопку Проверить, получил или ОК или список НЕ ОК...

Да и с бэкапами, не так все просто, иногда приходится выбирать - терять месяц работы или чинить, бэкапы то есть, да вот плюха всплыла через месяц...
...
Рейтинг: 0 / 0
30.07.2021, 19:04
    #40087410
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
При нажатии кнопки тоже не все просто:каковы критерии ОК или НЕ ОК?
...
Рейтинг: 0 / 0
30.07.2021, 19:42
    #40087420
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
sdku
При нажатии кнопки тоже не все просто:каковы критерии ОК или НЕ ОК?

Критерии элементарные:
- показать недостающие связи в тестируемой БД по отношению к эталонной (лишних то не будет)
- показать не совпадающие grbit (потерялась целостность или каскадность)
...
Рейтинг: 0 / 0
31.07.2021, 06:21
    #40087455
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно протестировать структуру базы данных ?
vmag
ROI
многие её не использую(я в том числе).

Это плохо...
соответственно...

Для вас может быть и плохо.
Мне номально.(все приходит с опытом)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как программно протестировать структуру базы данных ? / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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