|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Всем доброго! Дано: есть ХП с выданными на нее правами. Требуется: для другой ХП сконфигурировать ровно такие же права, как и на первой. Тривиальный способ - парсинг sysprotects и динамические запросы на каждую запись с использованием имени второго объекта. Может есть более изящное решение? Или хотя бы системная процедура/функция, которая обеспечит маппинг поля action в удобоваримые конструкции типа "insert" и т.п. - громадный CASE на соответствующий маппинг несколько не радует глаз... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 16:59 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
У меня это решается проще. Все объекты лежат на диске (и subversion) в скриптах. Соответственно все grant находятся там-же, так что copy-paste, search&replace и завершается все перезаливкой объектов в базу. Все просто и легко. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 17:24 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
White Owl, это да. Но есть ряд легаси объектов в базе, до которых я не добирался еще. И вот периодически возникает задача - создать процедуру/таблицу с "такими же правами как на вот этой процедуре/таблице". Вообще странно, что нет стандартного какого-нить механизма типа sp_copypermissions Object1, Object2 . Было б удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 17:44 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Mikle83White Owl, это да. Но есть ряд легаси объектов в базе, до которых я не добирался еще. А чего там добираться? Если исходный скрипт потерял, то запускаем Sybase Central, right-click на объекте, Generate DDL и все. Кстати, там же будет и список всех grant'ов. Которые тоже можно будет скопировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 18:46 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Mikle83, Тривиальный способ - парсинг sysprotects и динамические запросы на каждую запись с использованием имени второго объекта. естьи еще один способ - генерировать запрос на выдачу прав в виде теста, на основе данных того же sysprotects. select 'grant exec on xxxxx to '+user +' go' from sysprotects where proc = 'yyyyy' go ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2015, 00:17 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Mikle83Всем доброго! Дано: есть ХП с выданными на нее правами. Требуется: для другой ХП сконфигурировать ровно такие же права, как и на первой. Тривиальный способ - парсинг sysprotects и динамические запросы на каждую запись с использованием имени второго объекта. Может есть более изящное решение? Или хотя бы системная процедура/функция, которая обеспечит маппинг поля action в удобоваримые конструкции типа "insert" и т.п. - громадный CASE на соответствующий маппинг несколько не радует глаз... не пробовал, но идея такая: 1) sp_configure 'allow updates',1 2) сделать вью, смотрящую на sysprotects, в которой один объект/id с правами заменить на другой 3) выгрузить её (bcp) и залить обратно в sysprotects ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2015, 15:54 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
komrad, в чем смысл шаманства именно с BCP? Почему не просто insert в таблицу ? BCP даст какой-то особенный профит при работе с системными таблицами? P.S.: интерес чисто академический, ибо на проде за такой подход я бы лично руки поотрывал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2015, 16:32 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Mikle83komrad, в чем смысл шаманства именно с BCP? Почему не просто insert в таблицу ? BCP даст какой-то особенный профит при работе с системными таблицами? P.S.: интерес чисто академический, ибо на проде за такой подход я бы лично руки поотрывал :) Если выгружать в тексте, то можно поудалять лишнее, поправить что-нить. А в общем, конечно, можно и просто инсертить. Однако в случае с BCP, останутся файлы на случай отката и т.п. По поводу рук, поотрывать и продакшена - бывает всякое. Например, в одном очень известном банке баги в коде/процедурах правят по живому в продакшене. Мотивируя это тем, что "нет времени на тесты, у нас работают только проверенные люди [которые ошибок не допускают]". Так что это вопрос философский - как где заведено, так там и работают. Что касается апдейта системных таблиц - раз это разрешено и понимаешь, что делаешь, имеешь бекапы и т.п., то почему бы и нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2015, 17:09 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Mikle83Может есть более изящное решение? Или хотя бы системная процедура/функция, которая обеспечит маппинг поля action в удобоваримые конструкции типа "insert" и т.п. - громадный CASE на соответствующий маппинг несколько не радует глаз... одно время пользовался удобной и быстрой утилитой SQLDBX , которая умеет генерировать инсерты (скрипты) на базе выборки, которую ты сделал. может пригодится ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2015, 17:13 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
komradв одном очень известном банке баги в коде/процедурах правят по живому в продакшене. Мотивируя это тем, что "нет времени на тесты, у нас работают только проверенные люди [ которые ошибок не допускают ]". Чего-то у меня пазл не сложился: если такие спецы "проверенные" и ошибок не допускают => откуда баги? :) komradодно время пользовался удобной и быстрой утилитой SQLDBX, Спасибо! Посмотрю. komradЧто касается апдейта системных таблиц - раз это разрешено и понимаешь, что делаешь, имеешь бекапы и т.п., то почему бы и нет? Тут тема какая - SYBASE мягко сказать не договаривает (читай "плохо документирован") по системным процедурам/таблицам. И дать гарантию, что, к примеру, права "завязаны" чисто на sysprotects и больше никакие внутренние связки не меняются - я бы не рискнул... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2015, 18:37 |
|
ASE: Копировать права на объект
|
|||
---|---|---|---|
#18+
Mikle83komradв одном очень известном банке баги в коде/процедурах правят по живому в продакшене. Мотивируя это тем, что "нет времени на тесты, у нас работают только проверенные люди [ которые ошибок не допускают ]". Чего-то у меня пазл не сложился: если такие спецы "проверенные" и ошибок не допускают => откуда баги? :) автор имел ввиду, что если правят по живому, то правят безошибочно ;) Mikle83Тут тема какая - SYBASE мягко сказать не договаривает (читай "плохо документирован") по системным процедурам/таблицам. И дать гарантию, что, к примеру, права "завязаны" чисто на sysprotects и больше никакие внутренние связки не меняются - я бы не рискнул... в таком случае, можно попробовать следующее: 1) вывод sp_helprotect (либо её код) заносить в таблицу 2) обрабатывать таблицу, конструируя конструкцию grant... 3) результат п.2 выполнять динамически, используя команду "execute @grant_to_run" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2015, 18:59 |
|
|
start [/forum/topic.php?fid=55&fpage=6&tid=2009771]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 428ms |
0 / 0 |