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

Заранее всем спасибо.
...
Рейтинг: 0 / 0
Как программно протестировать структуру базы данных ?
    #38574596
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть коллекция TableDefs - перебирайте её мемберов, отбрасывая системные, и фиксите все её свойства.
...
Рейтинг: 0 / 0
Как программно протестировать структуру базы данных ?
    #38574722
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартные мощные сравняторы схем и данных гнушаются эмдебе?
...
Рейтинг: 0 / 0
Как программно протестировать структуру базы данных ?
    #38575702
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-Л,
а можно хоть название таких средств в пример привести? Нашел только mdb_compare но оно как то слабовато и схему данных совсем не проверяет...
...
Рейтинг: 0 / 0
Как программно протестировать структуру базы данных ?
    #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
Как программно протестировать структуру базы данных ?
    #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
Период между сообщениями больше года.
Как программно протестировать структуру базы данных ?
    #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
Как программно протестировать структуру базы данных ?
    #40087366
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

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

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


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

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

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

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

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

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


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