Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
burgosWarAntburgos, а просто запустить алтер и проигнорировать ошибку если его небыло? Это запускаю не я, а техники при актуализации приложения. Люди они нежные, при любом сообщении об ошибке впадающие а депрессию, из которой их вывести практически невозможно. Беречь техников, конечно, правильно, но вообще у вас странная концепция обновлений. Вы же должны привести базу в требуемое вам состояние. То есть если триггер должен быть, вы его создаёте/меняете, если не должен, то его и в коде обновления не будет. Код (проект) должен быть эталогом, должны быть пакеты обновлений, приводящие БД в требуемую версию, далее вы (или техники) накатываете пакеты на нужные системы (дев, тест, продакшен1, ... продакшенN), приводя системы в нужное состояние. А у вас сейчас, видимо, базы (причём несколько разных), в которых ручками что то правили (а где то не правили), и вам это не надо трогать. Подход рискованный, вы не будете знать, в каком состоянии база, какой в ней код, вы её не контролируете. Процесс сопровождения становится нервным, с бесконечными разборками "кто виноват". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 18:38 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
alexeyvg, У нас несколько другая ситуация. Иммется некий набор программ связанных мёду собой, и состоящих из отдельных блоков, которые подключаются в зависимости от того какую конфигурацию купит клиент. Существует также некий набор баз данных, которые тоже устанавливаются в зависимости от конфигурации. Плюс зти программы в некоторых случаях связаны с базами данных других программ, из которых они качают или в которые они передают данные. В общем черт голову сломить. Технику надо прийти к клиенту, запустить блок актуализации структур баз данных, установить новую версию программы и всё это не особенно зная, что именно там установлено. Каша конечно полная, но работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 22:55 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
burgos, тому, что Вы описали - прямая дорога в систему версионирования. Каждому заказчику поставляется та версия и те изменения в этой версии продукта с которой он желает работать. Для этого есть GIT, SVN и тому подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 13:18 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
TaPaKburgos, наверное потму что CREATE TRIGGER must be the first statement in the batch and can apply to only one table.причем это касается всех CREATE (ХП,/Ф-ций/Таблиц). Аццки неудобно писать скрипты, которые должны накатываться на непустую БД. При этом Drop+Create не выход, т.к. Create может быть неуспешен, ну и настроенные гранты слетят нафиг. Приходится извращаться с exec('create ...'). :( MS - дебилы на всю голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 14:38 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
L_argoTaPaKburgos, наверное потму что пропущено... причем это касается всех CREATE (ХП,/Ф-ций/Таблиц). Аццки неудобно писать скрипты, которые должны накатываться на непустую БД. При этом Drop+Create не выход, т.к. Create может быть неуспешен, ну и настроенные гранты слетят нафиг. Приходится извращаться с exec('create ...'). :( MS - дебилы на всю голову."Дебилы на всю голову" уже давно выпустили SSDT для ленивых. А неленивым уже ничего не поможет, даже если create разрешать писать не в начале батча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 14:42 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовburgos, тому, что Вы описали - прямая дорога в систему версионирования. Каждому заказчику поставляется та версия и те изменения в этой версии продукта с которой он желает работать. Для этого есть GIT, SVN и тому подобное. Основываясь на моём скомном опыте поддержка нескольких версий програмы нежизнеспособна. Гораздо проще установить всем одну и ту же версию програмы и задать ей конкретный режим функционирования с помощью файла, в которам задана конфигурация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 15:34 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич"Дебилы на всю голову" уже давно выпустили SSDT для ленивых. А неленивым уже ничего не поможет, даже если create разрешать писать не в начале батча.И толку с того ССДТ ??? Я сам программно создаю такие, как надо скрипты, а потом их накатываю. ССДТ все равно таких никогда не создаст. К тому же в реальных условиях может не быть под рукой ССДТ, н-р у заказчика. На create or alter сподобились аж в 2016. Не прошло и 20 лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 15:47 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
burgosalexeyvg, У нас несколько другая ситуация. Иммется некий набор программ связанных мёду собой, и состоящих из отдельных блоков, которые подключаются в зависимости от того какую конфигурацию купит клиент. Существует также некий набор баз данных, которые тоже устанавливаются в зависимости от конфигурации. Плюс зти программы в некоторых случаях связаны с базами данных других программ, из которых они качают или в которые они передают данные. В общем черт голову сломить. Технику надо прийти к клиенту, запустить блок актуализации структур баз данных, установить новую версию программы и всё это не особенно зная, что именно там установлено. Каша конечно полная, но работает.Никакого противоречия с тем, что я написал. Я же писал "(дев, тест, продакшен1, ... продакшенN)" - вот разные продакшен - это и есть разные клиенты, разные рабочие базы, которые должны немного отличаться друг от друга. И разумнее делать скрипты для конкретных баз, или делать один скрипт, но в котором это учитывается То есть вместо Код: sql 1. 2. 3. Писать Код: sql 1. 2. 3. Хотя инсталлятор для конкретного клиента ИМХО лучше. L_argoАццки неудобно писать скрипты, которые должны накатываться на непустую БД.ИМХО вопрос привычки к языку. "Аццки неудобно" - это когда нужно затратить для чего-либо в разы больше труда, чем можно было бы. А тут вопрос всего лишь в навыке, окружении и инструментах. Эти окружение и инструменты формируются в команде, и, в общем, всё стьановится легко и ненапряжно. Кстати, "на пустую базу" скрипт написать не легче, если писать хорошо. Ведь должна быть возможность выполнить скрипт несколько раз, и результат должен быть коректным. Тогда какая разница, на пустую или нет? L_argoПри этом Drop+Create не выход, т.к. Create может быть неуспешен, ну и настроенные гранты слетят нафиг.Это я не понял. Права надо прописывать в скрипте. А если "Create неуспешен", то, значит, апдэйт не удался, нужно читать ошибку и исправлять (или воосстановить из бакапа, и отослать разработчикам письмо с логом). Гавриленко Сергей Алексеевич"Дебилы на всю голову" уже давно выпустили SSDT для ленивых. А неленивым уже ничего не поможет, даже если create разрешать писать не в начале батча.ИМХО для задачи ТС не будет разницы между SSDT и нотепадом, писать то скрипты всё равно вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 15:55 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
L_argoНа create or alter сподобились аж в 2016. Не прошло и 20 лет.С одной стороны да, эито минус МС С другой стороны, это разве что то меняет? По любому апдэйт кода делается тулзом разработки, либо в виде исходного шаблока для кода процедуры, либо сборщиком - не набираете же вы код процедуры/триггера в скрипте полностью второй раз? А потом скрипт должен собираться сборщиком апдэйта. L_argoИ толку с того ССДТ ??? Я сам программно создаю такие, как надо скрипты, а потом их накатываю. ССДТ все равно таких никогда не создаст. К тому же в реальных условиях может не быть под рукой ССДТ, н-р у заказчика.Да, для работы со сложными проектами БД МС так ничего и не создал с 80-х Всё тот же make, ну, или свои самодельные программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 16:00 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
Права надо прописывать в скрипте.Это не всегда возможно. А что если каждый логин имеет индивидуальную схему Grant-прав (пусть не на все объекты, а на некоторые критичные) ? Я такое встречал. Перенакат прав - штука небыстрая и нетривиальная, т.к. список дропнутых/пересозданных объектов неочевиден и не всем из них нужен перенакат. У нас полный перенакат всех прав занимал ок. 1мин. с почти полной блокировкой работы. :( Зачем проделывать это всё, если достаточно всего лишь ALTER ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 16:21 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
L_argoЭто не всегда возможно. Ну в принципе да, хотя индивидуальные права по логинам всё таки сильное исключение L_argoЗачем проделывать это всё, если достаточно всего лишь ALTER ?Ну это так, зачемание по правам, а вообще ничего не мешает делать только ALTER У на стандартный шаблон процедуры (триггера) в студии Код: sql 1. 2. 3. 4. 5. 6. 7. Соответственно всегда делается просто ALTER L_argoПеренакат прав - штука небыстрая и нетривиальная, т.к. список дропнутых/пересозданных объектов неочевиден и не всем из них нужен перенакат. У нас полный перенакат всех прав занимал ок. 1мин. с почти полной блокировкой работы. :(Это уже зависит от концепции прав Если есть некие роли, предназначенные разным группам процедур, то раздача прав делается в скрипте создания самого объекта. И тогда не надо перезаливать все права. Зачем "все", если мы меняем в апдэйте немногие объекты? Вот для них, которые меняли, и надо назначать права, а не перезаливать всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 16:46 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
У наc стандартный шаблон процедуры (триггера) в студииУ меня точно также. Но хак с EXEC('create ...') конеш это ненормально в 21 веке (кинул камень в сторону MS). А перезаливка прав - штука специфичная и динамичная для каждого проекта и не хотелось бы массово выносить ее в скрипты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 17:56 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
L_argoУ наc стандартный шаблон процедуры (триггера) в студииУ меня точно также. Но хак с EXEC('create ...') конеш это ненормально в 21 веке (кинул камень в сторону MS). А перезаливка прав - штука специфичная и динамичная для каждого проекта и не хотелось бы массово выносить ее в скрипты. Всё, что работает, нормально. Впрочем, предложите альтернативы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 18:01 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
burgos, Альтернатива - это SSDT и умение работать с ветками GIT. Плюс немного персонала, занимающегося по совместительству формированием поставок. Персонал можно ротировать, чтобы все в курсе были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:11 |
|
||
|
ALTER TRIGGER
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, У нас фирма 26 человек, включая 2 техника, одного comercial, который надоедает потенциальным клиентам и выслушивает претензии не потенциальных, начальника, бухгалтера и 2-х на тестконтроле. Остальные, как принято выражаться, говнокодеры/руководители проектов, часто в одном лице. Можно конечно устроить им ротацию, но не знаю насколько это нужно. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 12:54 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39740495&tid=1688685]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 447ms |

| 0 / 0 |
