|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Всем привет, поставлена следующая задача, требуется при CREATE или ALTER процедуры или функции, проверить, оставил ли разработчик комментарий в коде, если нет, то заполнить автоматически ключевые поля, кто/когда создали или исправил. Я решил не заморачиваться проверкой оставил ли сам разработчик описание, а автоматически оставлять свои "метаданные". В голову пришло написать такой DDL триггер: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
В результате получаю нужные мне поля: [db_name], [db_object_name], [action_name], [tsql_code],author_name Но тк как в данном примере я только ловлю уже состоявшееся событие, то теперь мне нужно внести изменения в тело процедуры, добавив описание применив ALTER. Добавляю в триггер изменения текст запроса на ALTER: Код: sql 1. 2. 3. 4. 5. 6.
Осталось последнее - это выполнить execute sp_sqlexec @TSQLCommand в контексте нужной базы данных, как я уже понял, использовать USE [db_name] или [db_name].[dbo].[proc_name] у меня не получится. Что тут можно использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 13:10 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
teCa, что можно использовать? GIT, pool request, рецензирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 13:29 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Владислав Колосов, Ну, а если не касаться организационных моментов, а спуститься на уровень задачи которую должен решить я, как ДБА?) Следующим этапом, мне предстоит в описание добавить ссылку на проект в GIT) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 13:49 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
teCa, так поступать, в общем-то нельзя, поскольку процедуры в базе будут отличаться от процедур на сервере и в проект эти изменения сами собой не попадут. Хотя и функциональность кода не будет изменена, но при попытке публикации, например, из VS будут обнаружены изменения и студия будет вынуждена каждый раз переписывать процедуры на сервере, хотя изменений в проекте не было с момента последней публикации. Если очень хочется документировать, то лучше сохранять заголовки или что требуется о отдельной таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:04 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Владислав Колосов Если очень хочется документировать, то лучше сохранять заголовки или что требуется о отдельной таблице. + можно заполнять extended properties созданного объекта, не меняя кода процедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:29 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Владислав Колосов, авторпроцедуры в базе будут отличаться от процедур на сервере описка, процедуры в проекте будут отличаться от процедур на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:31 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Согласен с Владиславом. Ну еще учтите возможность ошибки - догадайтесь, кто будет виноват, когда ваш триггер поломает рабочую базу при релизе ) Создайте БД DBA, туда логируйте триггером, кто-когда-что изменил + сам текст изменения. Плюс в этой же базе можно создать отчетик, который выдаст процедуры без ваших обязательных полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:33 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Пока вот такой вариант решающий данную задачу: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
Следующий этап задачи, имея исходные данные, получить ссылки на проекты в гите, где присутствует данная хранимка. Автор задачи представляет себе так, что разработчик, открывая текст хранимки, должен видеть ссылку на проект в гите. Не представляю пока, возможно ли это в принципе, тк с гитом никогда не работал и что он из себя представляет, понятия не имею, пока из того, что удалось выяснить, что на рабочих станциях у разработчиков установлен гит клиент, в который через командную строку можно отправлять команды и получать какие то данные. Если например, клиент позволяет получить данные по имени объекта и в этих данных будет присутствовать ссылка на него, то и эту графу теоретически можно заполнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:34 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
komrad Владислав Колосов Если очень хочется документировать, то лучше сохранять заголовки или что требуется о отдельной таблице. + можно заполнять extended properties созданного объекта, не меняя кода процедуры Вот этот вариант кстати тоже интересный и наверняка боле правильный. авторСоздайте БД DBA, туда логируйте триггером, кто-когда-что изменил + сам текст изменения. Плюс в этой же базе можно создать отчетик, который выдаст процедуры без ваших обязательных полей. Такой лог у меня есть, но в лог ползать не хотят, хотят открыть текст хранимки и все читать в нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:38 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
komrad Владислав Колосов Если очень хочется документировать, то лучше сохранять заголовки или что требуется о отдельной таблице. + можно заполнять extended properties созданного объекта, не меняя кода процедуры Скажу честно - это очень геморройно и неудобно, мы так пробовали: обычно копируешь текст из VS, меняешь CREATE на ALTER, а там еще внизу создание свойства, которое уже есть, и оно генерит ошибку. Поначалу терпимо, но через полгода начинает бесить. teCa Остановитесь ! Этого не должно быть в триггере. Это можно расставить 1 раз скриптом по всей базе, потом импортировать в проект, а уж гит там или tfs - без разницы. И конечно никаких ссылок на конкретный элемент в системе хранения кода быть не должно. Что вы будете делать, если у вас система хранения переедет на другую машину или другое ПО? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 19:52 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
teCa, "хотят открыть текст хранимки и все читать в нем" неверное решение. Источником кода должен являться проект, а не база данных. Если у вас "программируют на нортоне базе данных", то бегите из этой конторы :). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:37 |
|
Автоматическое добавление DESCRIPTION при CREATE_PROCEDURE?
|
|||
---|---|---|---|
#18+
Владислав Колосов "хотят открыть текст хранимки и все читать в нем" неверное решение. Источником кода должен являться проект, а не база данных. Если у вас "программируют на нортоне базе данных", то бегите из этой конторы :). Это когда ты находишься там, где проектируют , а если ты находишься там, где эксплуатируют , то отступать некуда. За тобой пользователь, смотрящий на тебя, как на Бога, а перед тобой только автоматически сгенерированный текст процедуры, понимание которого равносильно расшифровке иероглифов на глиняной табличке. Бежать нужно из конторы, где из текста процедуры не узнаешь кто, когда и зачем? А еще быстрее нужно бежать от систем, в которых эти сведения формируются триггером. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 12:51 |
|
|
start [/forum/topic.php?fid=46&msg=40135645&tid=1683807]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 135ms |
0 / 0 |