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

Откуда:
Сообщений: 3
Прошу сильно не пинать, т.к. с SQL сервером сталкиваюсь редко.

Имеется несколько процедур, каждая из которых расположена в отдельном файле. Нужно автоматизировать загрузку (в перспективе и обновление) этих процедур.
Можно ли написать пакетный файл загрузки/обновления процедур из файлов? Что-то типа батника.
14 сен 12, 11:10    [13162916]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
sasha90,

можно
sqlcmd+ for для cmd/bat файлов
14 сен 12, 11:13    [13162943]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
locky
sasha90,

можно
sqlcmd+ for для cmd/bat файлов


Угу, а лучше использовать среду разработки с поддержкой деплоймента проектов баз данных, как VS2010. В котором не только хранить код , деплоить , сравнивать схемы можно.
14 сен 12, 11:15    [13162972]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Ken@t
locky
sasha90,

можно
sqlcmd+ for для cmd/bat файлов


Угу, а лучше использовать среду разработки с поддержкой деплоймента проектов баз данных, как VS2010. В котором не только хранить код , деплоить , сравнивать схемы можно.

1. Для начала - VS2010 надо купить
2. Затем - развернуть весь этот паровоз там, где это необходимо

И всё это для того чтобы время от времени загружать в базу несколько процедур?
14 сен 12, 11:20    [13163018]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Ken@t
locky
sasha90,

можно
sqlcmd+ for для cmd/bat файлов


Угу, а лучше использовать среду разработки с поддержкой деплоймента проектов баз данных, как VS2010. В котором не только хранить код , деплоить , сравнивать схемы можно.
Деплой там сделан ограниченный, для него нужен доступ к серверам. Это хорошо только для разработки.

А для сборки можно либо делать командный файл с SQLCMD, а ещё лучше сделать командный файл, формирующий скрипт для деплоя - более гибко получится.
14 сен 12, 12:36    [13163851]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
alexeyvg
а ещё лучше сделать командный файл, формирующий скрипт для деплоя - более гибко получится.
И такой у вас имеется?
14 сен 12, 14:03    [13164853]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Mnior
alexeyvg
а ещё лучше сделать командный файл, формирующий скрипт для деплоя - более гибко получится.
И такой у вас имеется?
Я имел в виду то, что предложил locky, только без sqlcmd:
locky
можно
sqlcmd+ for для cmd/bat файлов
В принципе мы когда то делали билд, используя msbuild, в новых версиях он генерит скрипт объектов. Но это сильно сложнее, и опять же негибко, в реальной системе совершенно неприменимо.

В итоге сделали cmd-программы, и собирали в них скрипты.
14 сен 12, 16:53    [13166330]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
alexeyvg, я чисто проверить, мол неужели кто-то рюханул проблему в общем виде (если она вообще автоматизируется).

Кроме как собирать набор готовых скриптов пока ничего не видел. :(
14 сен 12, 18:57    [13167140]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Mnior
alexeyvg, я чисто проверить, мол неужели кто-то рюханул проблему в общем виде (если она вообще автоматизируется).
Увы, микрософт манкирует, не развивает студию для сиквела. Либо нужно много вкладывать (у нас было 2 выделенных билдмастера), либо по простому полу-вручную скриптами.

В принципе, теоретически, проблему можно решить в общем виде (написать всякие аддины и утилиты для студии и msbuild), но я тоже не слышал про такое.
14 сен 12, 22:58    [13167957]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
timda
Member

Откуда: Россия
Сообщений: 580
sasha90,

самый хороший способ для таких объектов как SP, UDF, VIEW
при деплое
ИМХО
1) drop all objects
2) create все заново
14 сен 12, 23:38    [13168093]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
timda
Member

Откуда: Россия
Сообщений: 580
alexeyvg,

почему же, есть встроенные утилиты в сам сервер
есть встроенные механизмы с 2008 по отслеживанию изменений, просто надо немного поизучать и включить.
если интересно - покопаюсь в закладках.
14 сен 12, 23:39    [13168097]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
timda
sasha90,

самый хороший способ для таких объектов как SP, UDF, VIEW
при деплое
ИМХО
1) drop all objects
2) create все заново
О да, отлично! Только ещё нужно раздавать права, выстраивать зависимости, уничтожать таблицы, связанные с этими объектами, и вообще отключать пользователей во время деплоя.


timda
alexeyvg,

почему же, есть встроенные утилиты в сам сервер
есть встроенные механизмы с 2008 по отслеживанию изменений, просто надо немного поизучать и включить.
если интересно - покопаюсь в закладках.
Тут речь не об изменениях, а о процессе деплоя.

Т.е. нужно сделать нечто, что можно передать по акту отделу эксплуатации клиента, там проведут тестирование на тестовом окружении и потом задеплоят на продакшен.

И какие изменения отслеживать, не деплоить же изменения на серверах разработчиков на тест или тем более на продакшен?
15 сен 12, 00:12    [13168194]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
alexeyvg
О да, отлично! Только ещё нужно раздавать права, выстраивать зависимости, уничтожать таблицы, связанные с этими объектами, и вообще отключать пользователей во время деплоя.

ииии... чо?
Вроде как не очень сложно
Хотя и кропотливо бывает местами
15 сен 12, 00:18    [13168206]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
locky
alexeyvg
О да, отлично! Только ещё нужно раздавать права, выстраивать зависимости, уничтожать таблицы, связанные с этими объектами, и вообще отключать пользователей во время деплоя.

ииии... чо?
Вроде как не очень сложно
Хотя и кропотливо бывает местами
Не очень сложно, но кропотливо.

Тем более что рассматривается максимально простой вариант - просто залить все скрипты из списка файлов, т.е. будет проблема даже хотя бы получить список изменяемых объектов.

Почему бы вместо:
timda
1) drop all objects
2) create все заново
не делать альтер в скриптах всех объектов???

Единственно, бывают некоторые более сложные проблемы, типа обновить функцию, которая указана как дефаулт для поля таблицы, тогда нужно писать скрипты вручную либо делать двухуровневый вызов для такой функции.
15 сен 12, 00:23    [13168220]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
у меня все программные объекты всегда заливаются скопом по очереди, в виде drop/create
Иногда только бывает необходимо явно указывать порядок создания объектов - ну так что-ж, указываю. Все остальные тупо накатываются в алфавитном порядке.

все DDL изменения идут дельтами от версии к версии.
15 сен 12, 00:26    [13168229]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
timda
Member

Откуда: Россия
Сообщений: 580
alexeyvg,

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

допускаю, что есть такие приложения, где доступ юзерный, но ТС об этом не упоминает. а шо - есть такие ? :)

ЗЫ: ты говорил "микрософт манкирует", с чем я может и согласен, но лишь отчасти и то в части вещей для архитекторов БД и просто системным архитекторов. Я до сих пор не использую никаких ОРМ лично в своих проектах, и ничего, обхожусь без EF и Linq2SQL. Без PowerDesigner и Visio. Создавать и перестраивать базу во время проектирования в SSMS мне было бы интересно - здесь развития нет, согласен.
15 сен 12, 01:05    [13168284]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
timda
только не надо меня щас парить оптимизатором и прочей лабудой, которая абсолютно теоретическая и не надо забывать про пул.
моя концепция предельно проста - база данных должна решать вопросы хранения и выборки данных, а не проблемы программистов, обслуживающего персонала и архитекторов.
Ну как же так, вы просите вас не парить, а сами нас парите какими то смешными нравоучениями? :-)

Если у вас нет проблемы деплоить объекты по причине их отсутствия, и пользователей тоже можно легко отключить, так значит всё хорошо, и не нужно ломать голову.
15 сен 12, 19:21    [13169458]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
timda
допускаю, что есть такие приложения, где доступ юзерный, но ТС об этом не упоминает. а шо - есть такие ? :)
Собственно, главный недостаток не раздача прав, а то, что система перестанет работать во время обновления процедур.
15 сен 12, 19:26    [13169471]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
timda
Member

Откуда: Россия
Сообщений: 580
alexeyvg
Если у вас нет проблемы деплоить объекты по причине их отсутствия, и пользователей тоже можно легко отключить, так значит всё хорошо, и не нужно ломать голову.

именно так, назначаете процедуру обновления регламентированную и отключаете всех на необходимое время.
и не ломаете голову себе, программистам, юзерам.

и не орешь что ты такой ниибический специалист у которого система работает 24х7 или 99.99
с пионерами свои глупости обсуждайте, а молодежь глупостям не учите.
с таких "архитекторов" вроде тебя все сложности ПО и начинаются - напридумывают головняков и потом сами не знают как работать и еще в темах ~ аля "Работадатель плохой" пишут какие работодатели козлы - обижают их таких "профи по головняку" :)
16 сен 12, 08:48    [13170934]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
timda
именно так, назначаете процедуру обновления регламентированную и отключаете всех на необходимое время.
и не ломаете голову себе, программистам, юзерам.
Не у всех же такие работы, что бы программист или даже директор ИТ мог решать, отключать пользователей или нет :-)
timda
с таких "архитекторов" вроде тебя все сложности ПО и начинаются - напридумывают головняков
"напридумывают головняков" обычно заказчики, и это правильно, не могу же я отказывать им в желании не отключать пользователей (за их деньги).

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

Я прямо представляю, клиент спрашивает - "а можно обновлять так, что бы юзеры продолжали работать, вот ещё миллион", а вы отвечаете - "нет, я назначаю другую процедуру" :-)

Не учите молодых, как им поменьше зарабатывать :-)
16 сен 12, 12:36    [13171306]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
locky
у меня все программные объекты всегда заливаются скопом по очереди, в виде drop/create
Иногда только бывает необходимо явно указывать порядок создания объектов - ну так что-ж, указываю. Все остальные тупо накатываются в алфавитном порядке.

все DDL изменения идут дельтами от версии к версии.
У нас тоже так. В итоге деплой пустой базы занимает 15 минут и это время растет от релиза к релизу. Тестеры негодуют не очень довольны.
16 сен 12, 13:00    [13171357]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
З.Ы. Только код альтерится.
16 сен 12, 13:01    [13171361]     Ответить | Цитировать Сообщить модератору
 Re: Массовая загрузка процедур на сервер  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Гавриленко Сергей Алексеевич
locky
у меня все программные объекты всегда заливаются скопом по очереди, в виде drop/create
Иногда только бывает необходимо явно указывать порядок создания объектов - ну так что-ж, указываю. Все остальные тупо накатываются в алфавитном порядке.

все DDL изменения идут дельтами от версии к версии.
У нас тоже так. В итоге деплой пустой базы занимает 15 минут и это время растет от релиза к релизу. Тестеры негодуют не очень довольны.


ненене!
Деплой базы с нуля - идёт не дельтами, а нормальными create-Скриптами
а вот апгрейд с версии на версию - дельтами, да
и это - долго :(
16 сен 12, 13:13    [13171391]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить