Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с ключами, таблицами [D5, MSSQL]


T{}r(l-l ©   (2004-03-02 11:33:00) 

Доброго времени суток, уважаемые!
Горю,блн,от глупости своей... :(

Delphi5/BDE/MSSQL Server 7.0

Такая вот проблема: есть база1, в ней 7 таблиц (с ключами).Для того, чтобы не мучаться с обновлением хранимых процедур, созданием новых таблиц и сохранением информации  был выбран следующий путь: человек обновляющий программу, первым делом insert into заливал 7 таблиц в Temp_база1, затем останавливал сервер, запускал setup, который, в свою очередь, просто тупо затирал база1.mdf и база1.ldf файлы, заменяя их новыми (с обновленными процами и т.д.). После этого человек запускал процу, которая забрасывала из Temp_база1 в база1, те нужные (ранее сохраненные) 7 таблиц. И вот здесь (из-за моего непонимания работы с первичными и вторичными ключами), я допустил ошибку - я делал drop каждой из 7 таблиц, а затем insert into - естественно, что структура таблиц развалилась. Т.е. получалось, что таблицы заливались, но уже без ключей, при этом данные туда ещё как-то заносятся (???), т.е. программа (экзешник) на местах работает, если запустить из-под Дэльфи, всё рушится и начинает ругаться на ключи...
Возможные пути решения: уверен, что есть возможность, при помощи SQL задавать таблицам ключи и связь, как это сделать? И ещё, может есть механизм (думаю, что скрипты, или системные серверные процедуры) для заливки на сервер обновленных хранимых процедур,
dts-пакетов и таблиц. Вариант с тем, чтобы приходить на рабочее место, открывать QueryAnalyzer и запускать процы не проходит, нужен вариант проще.

Вообщем, огромное всем спасибо, кто прочитал мой пост и буду благодарен за любую помощь!


T{}r(l-l   (2004-03-02 15:48:00) [1]

Это понятно, я вот что имею ввиду: вначале мы делаем новую версию, затем заклеиваем всё это в Setup, а потом отсылаем людей на места обновлять, а это может быть и раз в неделю, а может и раз в два месяца, хотя конечно можно сделать, чтобы он каждый день смотрел... Думаю, что легче сделать через WiseInstallMaster (именно с его помощбю мы ваяем Setup-ы), т.к. он , в принципе, и сам голый скрипт... Т.е. чтобы он выступал как бы в роли Analyzer-a. Осталось только научиться. ;+)


Petr V. Abramov   (2004-03-02 15:46:00) [2]

> Andriano   (02.03.04 12:58) [3]
> Естественно, ключи создавать лучше перед заполнением данных.
 Ничего естественного. При наличии ключей само "заполнение" будет идти медленнее, если постараться - в разы.
 Единственный случай, когда это справедливо - когда изначально есть очень большие подозрения на заливаемые данные.


just me   (2004-03-02 15:26:00) [3]

Не обновление делается по расписанию, а сервер сам по расписанию ищет, нет ли новых скриптов обновления, которые он еще не применял к базе.


T{}r(l-l   (2004-03-02 14:57:00) [4]

понятно, спасибо, через Generate Script c оригинальной (не сломаной) базы я сгенерил скрипты для ключей и после запуска этой процы ключи встали. По поводу обновления - это отдельно стоящие рабочие станции. А обновления случаются не по расписанию.


just me   (2004-03-02 13:18:00) [5]

Если система эксплуатируется и данные при апгрейде терять нельзя, значит ничего убивать и пересоздавать не нужно. Нужно просто периодически писать и пускать на сервере апдейт-скрипты, которые будут при необходимости модифицировать структуру таблиц, менять процедуры и тригеры, добавлять справочные данные и пр. А пускать такие скрипты можно по-разному. Вплоть до автоматического пуска по расписанию, когда сервер сам ищет скрипт в заданном каталоге. И здесь полезным будет завести в базе табличку для хранения номера версии базы и билда, чтобы отслеживать такие модификации.
И почитай статейку из MSDN "Deploying Database Solutions" - многие интересующие тебя вопросы там затрагиваются


Andriano   (2004-03-02 12:58:00) [6]

Естественно, ключи создавать лучше перед заполнением данных.


Andriano   (2004-03-02 12:57:00) [7]

Ничего не развалилось. Просто теперь надо ключи добавить и всё.


SergSuper   (2004-03-02 12:51:00) [8]

а не проще бэкап/ресторе делать? как-то нехорошо во внутренности то влезать


Наверх

Титульная страница Поиск, карта сайта Написать письмо