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

Откуда: Кишинёв
Сообщений: 6723
Кто-то встречал плагины к SSMS, VS (Visial Studio), или среды разработки или что-то похожее, при помощи которых можно писать код в объектах базы (процедуры, функции, таблицы), части которого включаются в зависимости от параметров среды.
Как к примеру в C#
#if (V2008)
	var blaBla = 'ALTER TABLE bla.Bla ADD COLUMN FooBar VarChar(4000) SPARCE';
#endif


И что вы думаете об этом?

К примеру в VS можно использовать Pre-build скрипты и переменные среды (SQLCMD variables) где можно добиться некоторых результатов.
Но при этом всё остальное "ломается". Нельзя в таком подходе использовать Schema Comparision и Code Analysis и т.п.

В оракакле и DB2 это присутствует. Но там это серверное решение. С одной стороны не имеет смысла, а с другой к примеру "сразу срабатывает" при смене окружения.

Можно говорить об использовании этого через систему контроля версий (VC). Но:
- мне не нравится то что код разрывен, эта невидимость приводит к рассогласованию
- Не раскрывает тему Version Control vs Conditional compilation - что удобнее.
Меня удивляет что этот общий подход отсутствует для MS T-SQL.
22 май 14, 15:31    [16055841]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Создавать универсальный швейцарский нож - неблагодарное дело.
Вроде и нож, но накладывает массу ограничений и в локтях жмет. Поэтому никто таким не занимается.
22 май 14, 16:17    [16056278]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Владислав Колосов,

Ваши слова хорошо сочетаются с фактом:
В оракакле и DB2 присутствует Conditional compilation.

Владислав Колосов
накладывает массу ограничений
Это каких?
Особенно это скажите "императивистам" (С++, C# и всеми остальными, тысячи их)

Владислав Колосов
Поэтому никто таким не занимается.
Думаю что не поэтому.
Т.е. пространные замечания тоже хорошо, но не серьёзно.
22 май 14, 17:41    [16057106]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
SQLCMD variables
Guest
частично это решается SQLCMD переменными

:setvar s1 "select"
:setvar s2 "*"
:setvar s3 "from"
:setvar s4 "sys.objects"
$(s1) $(s2) $(s3) $(s4)
22 май 14, 18:23    [16057320]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Mnior
К примеру в VS можно использовать Pre-build скрипты и переменные среды (SQLCMD variables) где можно добиться некоторых результатов.
SQLCMD variables
частично это решается SQLCMD переменными
А вы уверены?
Вот как сделать $IF по аналогии с C# #IF? Попробуйте!
Оно не сильно лучше чем MSBuild (к примеру). Тот же подход, запуск разных файлов. Более того - шире в возможностях (модификация проектного файла).

Вот один из вариантов решения с полной поддержкой.
Composite Projects and Schema Compare
22 май 14, 18:53    [16057450]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Up
23 май 14, 09:45    [16059492]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Я намекал на то, что лучше шить костюм по мерке, а не на все случаи жизни :)
Если Вы, конечно, не создаёте коммерческий продукт для широкого круга потребителей.
23 май 14, 12:21    [16060658]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Владислав Колосов
Если Вы, конечно, не создаёте коммерческий продукт для широкого круга потребителей.
Как раз на таких и рассчитывал. Но с оговоркой, что есть наборы разных потребителей, у каждого с нюансами.
Просто то, что есть вариант когда есть ветка (в контроллере версий, или на в худшем случае копия) для каждого варианта - это хорошо, но это всё разрознено и приводит к рассогласовке.
Тяжеловато зоопарком управлять.
23 май 14, 13:27    [16061124]     Ответить | Цитировать Сообщить модератору
 Re: Conditional compilation ($IF)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Mnior
Вот один из вариантов решения с полной поддержкой.
Composite Projects and Schema Compare
Note that in Schema Compare the option only affects publishing to a target database.
Это уже фигово. Да и вообще в обе стороны отображает как разницу.
И остаётся вопрос с override объектов.
23 май 14, 22:04    [16063932]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить