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

Откуда:
Сообщений: 194
Привет.
Как решается задача изменения, скажем, типов полей, их длин, индексов и отправка этих изменений на клента?
К примеру, я изменил тип поля Name c VARCHAR[10] на VARCHAR[110]. Как деплоить это изменение на базы данных кастомеров?
Спасибо.
9 сен 14, 23:06    [16556923]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
mabanza
Как деплоить это изменение на базы данных кастомеров?

Скриптом, например.
9 сен 14, 23:09    [16556932]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
mabanza
Member

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

"Скриптом например" - самый последний вариант. Гораздо эффективнее использовать SMO. Но и это не решает задачу с той легкостью, как это сделано в Pervasive (я Первезивный разработчик, но волею судеб и т.д.)

Так вот, как определить, какие поля поменялись, чтоб автоматически написать ALTER TABLE? В общем случае это невозможно, так как невозможно провести сравнение сервера клиента и моего девелоперского сервера. Они находятся в разных доменах, за всевозможными файрволами и пр.

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

Что бы такое можно тут сделать? Взять БД как CREATE TABLE скрипты? И что потом?
9 сен 14, 23:30    [16556972]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
mabanza
Гораздо эффективнее использовать SMO

Что вы говорите.
И что там есть метод "обновить метаданные" ?

mabanza
Так вот, как определить, какие поля поменялись, чтоб автоматически написать ALTER TABLE?

Ваши изменения уже изначально должны представлять собой команды alter
10 сен 14, 00:04    [16557058]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
mabanza
Member

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

>И что там есть метод "обновить метаданные" ?
Там есть метод перечислить поля таблицы со всеми свойствами. На случай, если придется идти по этому пути.

>Ваши изменения уже изначально должны представлять собой команды alter
Идея замечательная. Только они не знают, что они должны.
Как получить набор команд ALTER?

Спасибо.
10 сен 14, 00:16    [16557093]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
mabanza
Там есть метод перечислить поля таблицы со всеми свойствами.

А вы думаете эти данные SMO берет не из системных таблиц ?

mabanza
Идея замечательная. Только они не знают, что они должны.
Как получить набор команд ALTER?

Вот интересно, а вы что в графическом дизайнере правите структуру ваших таблиц ?
10 сен 14, 00:19    [16557101]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
mabanza
Member

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

Ну, допустим, да. В Администраторе.
10 сен 14, 00:27    [16557115]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
mabanza
Ну, допустим, да. В Администраторе.

Сразу на промышленной базе ?
Прелестно.
10 сен 14, 00:28    [16557118]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
mabanza
Member

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

Не понимаю. На какой промышленной базе?
На своей девелоперской базе. Сейчас поменял, через пять минут не понравилось - удалил. Поменял DAL код. Не пошло, все переделал, добавил новое поле и индекс по нему. И т.д.
Какая разница, в графическом дизайнере или руками.
После завершения - на тестирование. После тестирования - кат релиз. Но вместе с кодом проекта, нужно поставить изменения в БД.
Типичная история.

Но деплоить просто код без изменений БД нельзя - начинается проблема (см. начало треда).

Надеюсь, я достаточно ясно описал как оно тут по жизни, раньше может быть я это сделал не понятно.
Какие-нибудь идеи?
Спасибо.
10 сен 14, 00:41    [16557152]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31955
mabanza
Так вот, как определить, какие поля поменялись, чтоб автоматически написать ALTER TABLE? В общем случае это невозможно, так как невозможно провести сравнение сервера клиента и моего девелоперского сервера. Они находятся в разных доменах, за всевозможными файрволами и пр.
На промышленных базах так не делают. Да это и невозможно автоматически, потому что изменение модели обычно есть сложный процесс, не ограничивающийся изменением длинны столбца.

Далее, для простых баз сейчас есть такие средства, про которые вы говорите, можете почитать про новую концепцию в Sql Server Data Tools (SSDT), Visual Studio 2012
Там есть средства BACPAC и DACPAC, которые как раз делают то, что вам нужно.
Естественно, разработку нужно веси при этом в средстве разработчика, а не "править экзешник в кодах" :-)

Ну и повторю, тут вряд ли будет кто-то, использующий эти возожности, это скорее можно найти на форумах веб-программистов.
10 сен 14, 01:10    [16557195]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
mabanza
Glory,

Не понимаю. На какой промышленной базе?
На своей девелоперской базе. Сейчас поменял, через пять минут не понравилось - удалил. Поменял DAL код. Не пошло, все переделал, добавил новое поле и индекс по нему. И т.д.
Какая разница, в графическом дизайнере или руками.
После завершения - на тестирование. После тестирования - кат релиз. Но вместе с кодом проекта, нужно поставить изменения в БД.
Типичная история.

Но деплоить просто код без изменений БД нельзя - начинается проблема (см. начало треда).

Надеюсь, я достаточно ясно описал как оно тут по жизни, раньше может быть я это сделал не понятно.
Какие-нибудь идеи?
Скриптом.
10 сен 14, 01:11    [16557196]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
mabanza
На своей девелоперской базе. Сейчас поменял, через пять минут не понравилось - удалил. Поменял DAL код. Не пошло, все переделал, добавил новое поле и индекс по нему. И т.д.
Какая разница, в графическом дизайнере или руками.

Т.е. вы потыркали мышкой и теперь хотите откуда то получить список всех команд, которые при этом выполнились ?
10 сен 14, 09:08    [16557473]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
mabanza,
У нас практикуется нулевой бэкап. То есть, в среде разработки удаляем тестовые данные из таблиц и бэкапим. Потом восстанавливаем в тесте или проде.
Второй вариант. Это проработать базу master, а в ней sys.objects, а также другие оказавшиеся полезными. и написать нужные скрипты.
10 сен 14, 10:00    [16557690]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Yagrus2
У нас практикуется нулевой бэкап. То есть, в среде разработки удаляем тестовые данные из таблиц и бэкапим. Потом восстанавливаем в тесте или проде.
Вот клиенты обрадуются, обнаружив у себя, после очередного апгрейда, девственно чистую БД...
Yagrus2
Второй вариант. Это проработать базу master, а в ней sys.objects
Что значит "проработать"? В каких целях?
10 сен 14, 11:44    [16558269]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Yagrus2
Второй вариант. Это проработать базу master, а в ней sys.objects
Что значит "проработать"? В каких целях?[/quot]

В ней очень много полезных системных таблиц. Из них можно вытащить метаданные
10 сен 14, 12:29    [16558623]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
В ней очень много полезных системных таблиц. Из них можно вытащить метаданные

А какое отношение таблицы в master имеют к метаданным конкретной базы ?
Там хранится история всех "тырканий мышкой" в дизайнере таблиц ?
10 сен 14, 12:31    [16558635]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
invm
Yagrus2
У нас практикуется нулевой бэкап. То есть, в среде разработки удаляем тестовые данные из таблиц и бэкапим. Потом восстанавливаем в тесте или проде.
Вот клиенты обрадуются, обнаружив у себя, после очередного апгрейда, девственно чистую БД...

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

Проще изучить master
10 сен 14, 12:33    [16558649]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory,
Как я понял, по ТС хочет знать текущее состояние.
10 сен 14, 12:34    [16558654]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
Как я понял, по ТС хочет знать текущее состояние.

Перечитайте тему.
10 сен 14, 12:36    [16558664]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
msLex
Member

Откуда:
Сообщений: 9273
Yagrus2
Проще изучить master
до сих пор непонятно, что конкретно вы решили "изучать" в мастере, и как это поможет "накатить" изменения вызванные "мышекликольством" в пользовательской базе на дев окружении?
10 сен 14, 12:36    [16558666]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
msLex
Yagrus2
Проще изучить master
до сих пор непонятно, что конкретно вы решили "изучать" в мастере, и как это поможет "накатить" изменения вызванные "мышекликольством" в пользовательской базе на дев окружении?


Поясню, что я имел ввиду.
В среде разработки в базе master вытаскиваю самые свежие метаданные
Тоже самое делаю в проде
Потом сравниваю.

Для разницы пишу скрипты, которые запускаю в проде.
10 сен 14, 12:42    [16558694]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
В среде разработки в базе master вытаскиваю самые свежие метаданные

Расскажите, как вы из " master вытаскиваю" метаданные пользовательской базы ?

Yagrus2
Потом сравниваю.

Сравниваете что ? текстовые файлы ?
10 сен 14, 12:43    [16558699]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
mabanza
Какие-нибудь идеи?
Спасибо.

1. Вы можете перестать дизайнить БД мышкой и проблема решиться сама-собой.
2. Иметь у себя две версии БД: текущую релизную и девелоперскую. Тогда любой утилитой сравнения схем БД сможете получить вожделенный скрипт.
3. Извратиться: написать DDL-триггер, который будет коллекционировать в специальной служебной таблице все результаты мышедизайнерства.
10 сен 14, 12:50    [16558726]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
msLex
Member

Откуда:
Сообщений: 9273
Yagrus2
Поясню, что я имел ввиду.
В среде разработки в базе master вытаскиваю самые свежие метаданные

Код в студию

Yagrus2
Потом сравниваю. Для разницы пишу скрипты, которые запускаю в проде.

Ручками или генерити скрипты автоматически?
10 сен 14, 12:53    [16558746]     Ответить | Цитировать Сообщить модератору
 Re: Обновление метаданных  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
msLex,
Я умею только ручками
10 сен 14, 12:55    [16558757]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить