четверг, 24 декабря 2015 г.

              TABLE DEPENDS : Дерево серебрянного ключика.

Эта программа может быть интересна начальникам проекта, старшим группы,ведущим программерам , особенно тем, что пришли на новое место.
Kому важно быстро понять логические
связи меж таблицами, т.e., то самое, что определяют внешние ключи.

Где-то, в середине статьи помещён адресс для скачивания.

Раззипте, запустите table_depends.exe
приятной работы.

Как Дата Бейс Админу, мне эта тема была безралична. Подумаешь, юзер залип на внешних ключах, а вот его просьба o создании программы заинтересовала.
Как был программистом -так и остался.
Инструмент Майкрософта, который играет на данной поляне
скучен и неповоротлив, требует перехода из одного окна в другое, пока ум за разум не заедет.
Моя погремушка более демократична.

Интерфейс грандиозен ровно настолько,
на сколько у меня хватило терпения,
то есть-по минимуму.

Поиск.
















В остальном, свою работу программа выполняет,
про анналогов на рынке не слыхал, сказать честно, не искал.
Но если-бы были, то полагаю, мимо меня  бы не прошли.
Слишком много слёз пролито над внешними ключами.
Скачка:
https://drive.google.com/file/d/0B2hfyDOpVkzjbWJ1NGJMdW00d2s/view?usp=sharing&resourcekey=0-FExluI5FYft5Zo3c4RY3qw


Спустя 13 лет, эта история получила продолжение.
Наш отдел перешёл в новоё здание.
Я оказался в одной комнате с двумя ветеранами.
Впрочём, я тоже, в этой категории.
И вот на этих двoих съехал проект загрузки из файлов
семи сотен таблиц, которые прошиты 290 внешними ключами.
Балк Инсерт(Bulk Insert), кто про него не слыхал ?
Но когда база повязанна внешними ключами, как эта,
нужно правильно выстроить последовательность Балков.
Иначе, загрузки не будет. Внешниe ключи её завалят,
для них это обычный ввод некорректной информации.
Я уже налетал на такие случаи. Решал их просто.
Table Command. (Ссылка в конце статьи).
Она может дать скрипт на снятие
ВСЕХ внешних ключей, а также скрипт на восстановление всех внешних ключей.
Oба скрипта я сохранял на диске. Только потом сбивал все внешние ключи.
Загружал данные в таблицы, потом восстанавливал внешние ключи.
В половине случаев, деcяток-другой внешних ключей не возвращались.
Это говорило о том, что данные уже были некорректны и ключи,  которые должны за этим смотреть пребывали в режиме NOCHECK. 
Ho моя Table Command опцию NOCHECK не выявляла(тогда). Не вложился я в эту тему и всё тут.
Подход был такой-не вернулись, не надо. Иногда, говорил хозяину базы, что такая муть имеет место быть, иногда не говорил. В любом случае,копаться в этих зарослях никто не начинал.
( Отвлекусь, на мгновение, о том, что всё-таки, впаял опцию на выявление NOCHECK внешних ключей. Будем надеятся, что удачно. Версия перегруженна.)
Мои ветераны сразу сказали, что сбивать ключи нельзя.
"Может вам поможет эта программа"?
Показал им Table Depends.
Они её посмотрели и в отличии от того юноши, в 2005-м,
не только поняли потенциал изделия, но и чётко определили те опции от которых я сачканул.
Дальше было, как у Высоцкого:

Меня схватили за бока
Два здоровенных паренька:
Играй, паскуда, пой,
Пока не удавили...

Я перегрузил в Гугл Драйв новую версию,
которая их, по крайней мере, устроила.
Сами разберётесь. Нет там ничего
такого, что нельзя понять.
Пришлось подкрасить и Table Command, на предмет загрузки с файла списка объектов. Т.е. в список объектов стало возможным загрузить с файла готовый список.
Иерархическая последовательность в нашем случае, которую проглотит Балк. А её строит Table Depends.
Для делитов, последовательность должна быть обратная,
от нижних ступенек к верхним.
Но для этого есть Эксель, с его обратной сортировкой.
Сделал заодно нормальный поиск в дереве. По подстроке вверх и вниз. Вкратце так.

За эти 13 лет удалось познакомиться с продуктом RED GATE.
Там целый зверинец полезнейших программ, одна из них
занимается внешними ключами. Всё платно и настолько, что 
моему боссу пришлось бить челом на высоких этажах, чтобы
что-то из этого RED GATE фирма приобрела.
Они, кстати, тоже применяют сбивание внешних ключей,
не так варварски, как я когда-то, но оказалось, что способ имеет место быть.

Программа сделанна на  PowerBuilder.
Что касается подключения PowerBuilder к SQL SERVER. В двух словах так:
Не ставьте программу на серверный компьютер, ставьте на компьютер пользователя.
Второе, PowerBuilder не любит бесплатные SQL SERVER, всякие там Экспрессы.
С обычного корпоративного кляента, должна отработать.

Те из вас, что заинтересуются моей попыткой
построения иерархической структуры (дерева), почти из ничего,
и без лишних инсталляций
приглашаются в блог HOME CATALOG.

Те из вас, что заинтересуются моей попыткой
автоматического составления скриптов для
MS SQL SERVER
приглашаются в блог TABLE COMMAND.
http://srulbond1.blogspot.co.il/2015/07/blog-post.html
Это, типа, зависимость процедур, вью, функций внутри базы.
https://sysdepends.blogspot.com/

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