Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
jarik_bsu
Member

Откуда:
Сообщений: 11
Есть 2 базы - удаленная и локальная.
К удаленной нет прямого доступа, только через удаленный рабочий стол.
на удаленной БД работает SQL разработчик и он достаточно часто вносит изменения в хранимые процедуры в удаленной БД.
Приходится периодически забирать все процедуры с удаленное БД как alter или Create скрипт и выполнять его на локальной БД. При этом часто возникает проблемма - то скрипт не может быть выполнен так как одни хранимые процедуры ссылаются на другие, которые еще не созданы. Приходится ручками менять последовательность процедур в скрипте.

Вопроса 2:
1. как заставить скрипты выполняться без проверки на наличии нужных объектов в БД. (они все равно будут созданы эим же скриптом, но позже)
2. может есть более продвинутый способ, чем просто выделять все хранимые процедуры с QA и создавать скрипт, а потом выполнять его на локальной БД?
1 окт 09, 14:58    [7730093]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
Влом регистрироваться
Guest
jarik_bsu,

держите на удаленном сервере копию базы как эталон. Затем сравнивайте ту, где копается разработчик и свой эталон чем-нибудь типа AdeptSQL Diff или VSTS for DbPros, и создавайте скрипты по обновлению для своей базы.

После того, как накатите скрипт на свою базу, на удаленном сервере эталонную копию заменяйте той, где копается разработчик.
1 окт 09, 15:23    [7730249]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
jarik_bsu
Member

Откуда:
Сообщений: 11
способ конечно неплох, но на удаленной компе создать эталонную БД не смогу, так как на том SQL сервере ограничено кол-во одновременно запущенных баз лицензией. А объяснять руководству что нужно купить лицензию на еще одну базу :) как-то неохота. У нас и так из-за этого ограничения 2 сайта test и Dev используют одну и ту же базу.
1 окт 09, 15:37    [7730359]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
jarik_bsu
способ конечно неплох, но на удаленной компе создать эталонную БД не смогу, так как на том SQL сервере ограничено кол-во одновременно запущенных баз лицензией. А объяснять руководству что нужно купить лицензию на еще одну базу :) как-то неохота. У нас и так из-за этого ограничения 2 сайта test и Dev используют одну и ту же базу.

А что это за редакция, которая кол-во баз ограничивает ? (видимо пропустил такую)
1 окт 09, 15:38    [7730373]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
jarik_bsu
Есть 2 базы - удаленная и локальная.
К удаленной нет прямого доступа, только через удаленный рабочий стол.
на удаленной БД работает SQL разработчик и он достаточно часто вносит изменения в хранимые процедуры в удаленной БД.
Приходится периодически забирать все процедуры с удаленное БД как alter или Create скрипт и выполнять его на локальной БД. При этом часто возникает проблемма - то скрипт не может быть выполнен так как одни хранимые процедуры ссылаются на другие, которые еще не созданы. Приходится ручками менять последовательность процедур в скрипте.

Вопроса 2:
1. как заставить скрипты выполняться без проверки на наличии нужных объектов в БД. (они все равно будут созданы эим же скриптом, но позже)
2. может есть более продвинутый способ, чем просто выделять все хранимые процедуры с QA и создавать скрипт, а потом выполнять его на локальной БД?

подумайте о системе контроля версий.
заставьте этого разработчика (приказом) оформлять свою работу в виде скриптов изменения функционала (которые разворачивают и изменяют все нужные объекты).
вопрос организации работы, ИМХО.
1 окт 09, 15:45    [7730421]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
Glory
Member

Откуда:
Сообщений: 104760
jarik_bsu

Приходится периодически забирать все процедуры с удаленное БД как alter или Create скрипт и выполнять его на локальной БД. При этом часто возникает проблемма - то скрипт не может быть выполнен так как одни хранимые процедуры ссылаются на другие, которые еще не созданы. Приходится ручками менять последовательность процедур в скрипте.

Вопроса 2:
1. как заставить скрипты выполняться без проверки на наличии нужных объектов в БД. (они все равно будут созданы эим же скриптом, но позже)

Вы неправы. При отсутствии объекта, используемого в процедуре, сервер выдает предупреждение, но создает текущую процедуру и продолжает выполнение скрипта
1 окт 09, 15:50    [7730462]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
Дедушка
jarik_bsu
Есть 2 базы - удаленная и локальная.
К удаленной нет прямого доступа, только через удаленный рабочий стол.
на удаленной БД работает SQL разработчик и он достаточно часто вносит изменения в хранимые процедуры в удаленной БД.
Приходится периодически забирать все процедуры с удаленное БД как alter или Create скрипт и выполнять его на локальной БД. При этом часто возникает проблемма - то скрипт не может быть выполнен так как одни хранимые процедуры ссылаются на другие, которые еще не созданы. Приходится ручками менять последовательность процедур в скрипте.

Вопроса 2:
1. как заставить скрипты выполняться без проверки на наличии нужных объектов в БД. (они все равно будут созданы эим же скриптом, но позже)
2. может есть более продвинутый способ, чем просто выделять все хранимые процедуры с QA и создавать скрипт, а потом выполнять его на локальной БД?

подумайте о системе контроля версий.
заставьте этого разработчика (приказом) оформлять свою работу в виде скриптов изменения функционала (которые разворачивают и изменяют все нужные объекты).
вопрос организации работы, ИМХО.
+1000. Всё остальное - иметь геморрой на свою зад голову. А оно Вам надо?
1 окт 09, 16:02    [7730557]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
jarik_bsu
Member

Откуда:
Сообщений: 11
Glory

Вы неправы. При отсутствии объекта, используемого в процедуре, сервер выдает предупреждение, но создает текущую процедуру и продолжает выполнение скрипта


Странно. У меня выдает красный Exception.
локальная база на 2005 Server и использую клиент SQL Server Managment Studio 2008

может нужно какую-нибудь дерективу включить или выключить?
1 окт 09, 16:59    [7730992]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
jarik_bsu
Member

Откуда:
Сообщений: 11
Извините, только что проверил. Действительно ругается но создает.
Cannot add rows to sysdepends for the current object because it depends on the missing object 'sp_test_1'. The object will still be created.

проверил на одной тестовой процедурке - ругнулось и создало.
Но вчера еще были и другие ошибки, сейчас найду какие...
1 окт 09, 17:06    [7731055]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
Дедушка
jarik_bsu
Есть 2 базы - удаленная и локальная.
К удаленной нет прямого доступа, только через удаленный рабочий стол.
на удаленной БД работает SQL разработчик и он достаточно часто вносит изменения в хранимые процедуры в удаленной БД.
Приходится периодически забирать все процедуры с удаленное БД как alter или Create скрипт и выполнять его на локальной БД. При этом часто возникает проблемма - то скрипт не может быть выполнен так как одни хранимые процедуры ссылаются на другие, которые еще не созданы. Приходится ручками менять последовательность процедур в скрипте.

Вопроса 2:
1. как заставить скрипты выполняться без проверки на наличии нужных объектов в БД. (они все равно будут созданы эим же скриптом, но позже)
2. может есть более продвинутый способ, чем просто выделять все хранимые процедуры с QA и создавать скрипт, а потом выполнять его на локальной БД?

подумайте о системе контроля версий.
заставьте этого разработчика (приказом) оформлять свою работу в виде скриптов изменения функционала (которые разворачивают и изменяют все нужные объекты).
вопрос организации работы, ИМХО.


Присоединяюсь и советую, ведь ваш разработчик может не только хранимки поменять, а например столбцы таблицы или ещё чего. Сам сталкивался с такой-же ситуацией, и решили её введя контроль версий скриптов. Когда разработчик хотел внести изменения в БД, он создавал скрипт с текущей датой в названии, если файл уже был, то вносил изменения в него. В комментариях в скрипте разработчик писал свою фамилию. Каждый вечер, изменения из таких файлов добавлялись в один общий, и всё это хранилось в системе контроля версий. Плюсы такого подхода - в любой момент вы можете привести БД в актуальное состояние и можно быстро найти кто и когда поламал базу :)
1 окт 09, 17:22    [7731138]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
jarik_bsu
Member

Откуда:
Сообщений: 11
Denis Reznik,

хорошо все это, но разработчик этот заказчика.
давно его уже пинаем чтобы он нам скрипты скидывал... но бесполезно, ссылается на то, что у него нет на это времени. И ничего ему не сделаешь. заказчику жаловались - бесполезно. В общем - заказчик платит, а гемморой по синхронизации на нас висит.
А изменения в табличках забираем раз в пол года вместе со всеми данныи - скачиваем копию базы.

Вчера случился прогресс - он начал скидывать названия процедур которые изменил.

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

При следующем обновлении посмотрю какие еще ошибки возникали. Сейчас воспроизвести их не получается.
1 окт 09, 17:35    [7731219]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
создаем минитул, который "просто запусти" - и который делает скрипты объектов.
Обучаем программера пинать этот тул раз в день/неделю/месяц.
Добавляем плюшку в виде автопосыла письма себе.
Получаем письмо. используя любой доступный тул сравниваем полученные от программера скрипты со скриптами эталонной базы.

-------------------------
There’s no silver bullet!
1 окт 09, 17:44    [7731259]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
vino
Member

Откуда:
Сообщений: 1191
jarik_bsu
Denis Reznik,

хорошо все это, но разработчик этот заказчика.
давно его уже пинаем чтобы он нам скрипты скидывал... но бесполезно, ссылается на то, что у него нет на это времени. И ничего ему не сделаешь. заказчику жаловались - бесполезно. В общем - заказчик платит, а гемморой по синхронизации на нас висит.
А изменения в табличках забираем раз в пол года вместе со всеми данныи - скачиваем копию базы.

Вчера случился прогресс - он начал скидывать названия процедур которые изменил.

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

При следующем обновлении посмотрю какие еще ошибки возникали. Сейчас воспроизвести их не получается.
систему версий веди сам, единственное, что для этого нужно - сливать скрипты объектов с БД, первый раз - свои (до изменений), а потом у заказчика - периодически или сразу после весточки от разработчика. Так вы не будете зависить от программера, а произошедшие изменеия увидишь сам
1 окт 09, 18:28    [7731526]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
vino
Member

Откуда:
Сообщений: 1191
locky
создаем минитул, который "просто запусти" - и который делает скрипты объектов.
Обучаем программера пинать этот тул раз в день/неделю/месяц.
Добавляем плюшку в виде автопосыла письма себе.
Получаем письмо. используя любой доступный тул сравниваем полученные от программера скрипты со скриптами эталонной базы.

-------------------------
There’s no silver bullet!
вот, кстати, и тулзу для сливания скриптов упомянули, осталось уточнить условия работы на сервере заказчика
1 окт 09, 18:30    [7731538]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
vino
вот, кстати, и тулзу для сливания скриптов упомянули, осталось уточнить условия работы на сервере заказчика

а причем тут "условия работы на сервере заказчика"?
1 окт 09, 18:33    [7731554]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте способ ручной синхронизации изменений в хранимых процедурах в 2-х БД.  [new]
jarik_bsu
Member

Откуда:
Сообщений: 11
Всем спасибо, подали отличную идею! Опишу все подробно, может кому пригодится.
при помощи Enterprise Manager делаем скрипты удаления+создания для всех процедур. (выделяем все процедуры, Generate SQL Script, на вкладке Options выбираем кодировку MSDos или windows, выбираем Create one file per object). В итоге мы получаем кучу файлов со скриптами удаления и потом создания каждой процедуры. Все эти файлы забираем с удаленного компа и ложим в CVS. В моем случае я их добавил прямо в проект и при помощи eclipse закинул в CVS.
Когда нужно обновить процедуры на локале - опять создаем скрипты на удаленной базе, забираем их себе и заменяем ими те, что лежат на локале в проекте, потом сравниваем с тем, что лежит в CVS. Я в Eclipse делаю синхронизацию, сразу вижу какие процедуры были изменены, при помощи compare editor просматриваю что именно было изменено. Замечательно!
И времени занимает немного, и контроль версий есть, и историю просмотреть можно.
Всем Спасибо!
2 окт 09, 13:54    [7735052]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить