![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с ключами, таблицами [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]а не проще бэкап/ресторе делать? как-то нехорошо во внутренности то влезать