Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Версионность SP процедур

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> Общие вопросы
Предыдущая тема :: Следующая тема  
Автор Сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 559
Откуда: Москва

СообщениеДобавлено: Пн Фев 15, 2016 11:36    Заголовок сообщения: Версионность SP процедур Ответить с цитатой

Мне очень не хватает версионности SQL объектов, аналогично объектам дизайнера. Внедрение такого решения для SQL сервера дорого и сложно, если я не ошибаюсь.
Предлагаю добавить в дизайнер список SP процедур. Во время сохранения или изменения код, написанный в процедуре, должен выполняться, аналогично Z-процедурам. Если ошибок нет, то новая версия кода внедряется на SQL сервере, а старая сохраняется в архиве дизайнера.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Antoshes



Зарегистрирован: 17.02.2014
Сообщения: 171
Откуда: Томск

СообщениеДобавлено: Пн Фев 15, 2016 11:46    Заголовок сообщения: Ответить с цитатой

rebel25
Объекты SQL сервера никак не связаны с объектами БОСС Дизайнера.
Если вы хотите отследить версионность изменений объектов SQL используйте SQL средства.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 559
Откуда: Москва

СообщениеДобавлено: Пн Фев 15, 2016 11:59    Заголовок сообщения: Ответить с цитатой

SQL объекты не связаны с дизайнером, но могут развертываться через дизанер и хранить там свои версии. Связь между дизайнером и сиквелом можно сделать по именам объектов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 404

СообщениеДобавлено: Пн Фев 15, 2016 12:33    Заголовок сообщения: Ответить с цитатой

Сохраняйте копии БД до обновления
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Antoshes



Зарегистрирован: 17.02.2014
Сообщения: 171
Откуда: Томск

СообщениеДобавлено: Пн Фев 15, 2016 12:38    Заголовок сообщения: Ответить с цитатой

rebel25
не думаю что БОССовцы захотят делать этот функционал. Он просто не нужен.
Если вам все таки хочется, то можете загружать в таблицу все SQL объекты, которые изменяются/добавляются обновлением и потом анализировать, вести версионность. Сделать это не сложно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 559
Откуда: Москва

СообщениеДобавлено: Пн Фев 15, 2016 14:50    Заголовок сообщения: Ответить с цитатой

Речь не только об обновлениях, даже хочу сказать что обновления не сильно интересны. Дело касается своих разработанных сиквельных процедур и функций.
Проблема в том что Х, Z языки, RP Server это не модные вещи - под них трудно найти людей, зато TSQL знают значительно большее число сотрудников. Даже те кто знают, стараются использовать сиквельные технологии т к это модно и пригодится при смене работы.
Я считаю что не нужно ограничивать разработчика - пиши только на х языке!, они люди творческие, если их ограничивать разбегутся.
В результате имеем много своих разработок из сиквельных объектов - отчеты, расчеты (не зарплаты а например премий). Объекты постоянно дорабатываются, а версий нет - из-за этого масса проблем.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Antoshes



Зарегистрирован: 17.02.2014
Сообщения: 171
Откуда: Томск

СообщениеДобавлено: Пн Фев 15, 2016 15:24    Заголовок сообщения: Ответить с цитатой

rebel25
https://habrahabr.ru/post/258005/
для примера
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Joenka



Зарегистрирован: 08.11.2013
Сообщения: 77
Откуда: Moscow

СообщениеДобавлено: Ср Фев 17, 2016 11:37    Заголовок сообщения: Ответить с цитатой

Идея может быть и интересная. В принципе, ничто не мешает сделать произвольный отчет, в котором слева сделать дерево (грузим туда нужный нам список процедур SQL), добавляем таблицу (одна из колонок хранит bin-ик), в которой храним версии процедур. А справа собственно отображаем запись, при клике открывается диалог, в одно из полей грузим текст процедуры, только редактор SQL синтаксис не подсветит, что не есть гуд
Правда вот редактор текстовый что в дизайнере, что в других объектах мне вот лично неудобен:
1. Нет подсветки парных скобок в виде "(" "{" "["
2. Нет подсветки выделенных переменных
3. И наконец самое запредельное, нет подсветки ошибок синтаксиса, правда тут еще большой вопрос вообще к редактору из дизайнера! Wink Ну вот, к примеру, почему в дизайнере "case when ... then ... else ... end ..." не работает, а так "(case when ... then ... else ... end) ..." работает (т.е. скобки появились)

Вот и получается, что мне приходится что X язык что SQL процедуру перетаскивать текст в Notepad++ и там редактировать код (там есть подсветки скобок и переменных), а уж потом обратно перетаскивать в дизайнер или в SQL Managment Studio для работы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Antoshes



Зарегистрирован: 17.02.2014
Сообщения: 171
Откуда: Томск

СообщениеДобавлено: Ср Фев 17, 2016 11:44    Заголовок сообщения: Ответить с цитатой

Ну что, тогда все дружно просим БОСС сделать intellisense и подсветку для Дизайнера Smile

rebel25
вчера еще одна статья на хабре про версионирование SQL объектов появилась
https://habrahabr.ru/post/277359/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 559
Откуда: Москва

СообщениеДобавлено: Ср Фев 17, 2016 19:32    Заголовок сообщения: Ответить с цитатой

Цитата:
Идея может быть и интересная. В принципе...

Я имел в виду только деплоить сиквельные процедуры через дизайнер, чтобы хранить версии, а разработаны они могут быть где угодно до этого - как правило на среде DEV.

Сейчас пишу триггер для таблицы с доп. сегментами. Идея такая, если в тексте есть cлова create или alter procedure то во время сохранения доп. сегмента выполнить его код.

Всё вроде работает, только столкнулся с проблемой кавычек - если в тексте хранимой процедуры есть кавычки то получаю ошибку.
Передаю текст в переменную и выполняю так
EXEC(@SS)
если в тексте нет кавычек то всё работает отлично. Не подскажите как выполнить текст из поля таблицы с кавычками?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Joenka



Зарегистрирован: 08.11.2013
Сообщения: 77
Откуда: Moscow

СообщениеДобавлено: Пт Фев 19, 2016 09:30    Заголовок сообщения: Ответить с цитатой

Если так сказать "в лоб", то просто до момента exec делайте replace(sql_text,'','''').
Т.е. перестраховываемся и все попадающиеся кавычки просто дублируем как это и делается всегда в динамическом SQL.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 559
Откуда: Москва

СообщениеДобавлено: Чт Апр 28, 2016 09:52    Заголовок сообщения: Ответить с цитатой

У меня так и не получилось использовать для внесения изменений в серверные процедуры дизайнер. Повесив триггер на соответствующую таблицу, который запускает код X процедур при сохранении, если в них встречаются символы, характерные для хранимых процедур, получал ошибку каждый раз, если в тексте процедуры были кавычки. Ничего из здесь описанного не помогло.
Можно попытаться вешать триггер на системные таблицы, но это запрещено. Создал вью к системным таблицам и триггер для нее, но от почему то не срабатывал.
Можно использовать для протоколирования профайлер или дмл триггеры, но я это не пытался делать, т к наверное это долго и не удобно.
В итоге сделал такое решение - создал джоб, который раз в сутки добавляет в протокол изменившиеся серверные объекты. Нельзя понять кто внес изменение, нельзя отследить изменения в течении дня, а в остальном меня всё устраивает.
Таким образом я получил архив серверного кода, которого мне очень не хватало - по аналогии с архивом дизайнерского кода.
Ниже текст скрипта заполнения архива:

CREATE TABLE [dbo].[user_arch](
[id] [int] IDENTITY(1,1) NOT NULL,
[object_id] int null,
[name] [varchar](500) NULL,
[type] [varchar](50) NULL,
[text] [varchar](max) NULL,
[mdate] [datetime] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

--изменившиеся объекты
insert into user_arch (object_id,name,type,text,mdate)
select o.object_id,o.name,o.type,c.definition,o.modify_date
from sys.sql_modules c join sys.objects o on (c.object_id=o.object_id)
join (select ROW_NUMBER() OVER(PARTITION BY object_id ORDER BY mdate DESC) as row, object_id, text, mdate from user_arch) t
on (t.object_id=o.object_id and t.text!=c.definition and row=1)

--добавленные объекты
insert into user_arch (object_id,name,type,text,mdate)
select o.object_id, o.name,o.type,c.definition,o.modify_date
from sys.sql_modules c join sys.objects o on (c.object_id=o.object_id)
where not exists (select * from user_arch where object_id=o.object_id)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
GIN



Зарегистрирован: 04.03.2010
Сообщения: 108

СообщениеДобавлено: Пн Июн 27, 2016 20:41    Заголовок сообщения: Ответить с цитатой

согласен, отследить проблема, так же никак не получается получить историю кто именно менял, на каждый объект не повесишь "шпиона". Меня тоже интересует данная проблема. Может есть у кого другое решение?

когда то тоже рыл в этом направлении - вот что только нашел по этой тематике у себя в переписке:

можно кстати попробовать посмотреть историю изменения в дефолтном файле...

select LoginName, StartTime, DatabaseName, ObjectName
from fn_trace_gettable
('C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_2008\MSSQL\Log\log.trc', default)
where EventClass = 164 -- Object:Altered
and ObjectType = 8272 -- Stored Procedure

но помню, что это не помогло мне.
_________________
Что бы увидеть свет в конце туннеля, нужно все время копать...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> Общие вопросы Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU