ƒобро пожаловать в форум, Guest††>>†† ¬ойти†|†–егистрац舆| ѕоиск†|†ѕравила†| ¬ избранное | ѕодписатьс€
¬се форумы / Microsoft SQL Server Ќовый топик †† ќтветить
“опик располагаетс€ на нескольких страницах: [1] 2   вперед  Ctrl      все
  ак программно выдать права на объекты SQL  [new]
Devel80
Member

ќткуда:
—ообщений: 77
ƒобрый день!

ѕодскажите, пожалуйста, есть ли какой-то способ программно раздать права на объекты SQL Server.

ƒелаю выборку по нужному мне принципу, прохожу курсором по выборке, получаю значение переменной @TableName.

ѕосле этого мне нужно, допустим, выполнить команду @SQL = 'GRANT SELECT ON ' + @TableName + ' TO Role_Test'.

“ак вот, если € делаю это, как обычно через exec @SQL, то ничего не получаетс€, пишет, что нет такой хранимой процедуры.

„то мне делать, если у мен€ несколько сотен таблиц и € не хочу на все раздавать права вручную?
17 май 12, 16:00††††[12571219]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
√авриленко —ергей јлексеевич
Member

ќткуда:
—ообщений: 37254
exec (@SQL)
17 май 12, 16:02††††[12571225]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Devel80
Member

ќткуда:
—ообщений: 77
ƒа, действительно сработало. »нтересно, откуда така€ хитрость, сколько лет уже занимаюсь программированием, нигде про это не читал.

—пасибо, что помогли!
17 май 12, 16:39††††[12571597]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
√авриленко —ергей јлексеевич
Member

ќткуда:
—ообщений: 37254
Devel80
»нтересно, откуда така€ хитрость
¬ы не поверите, но из документации:
EXECUTE (Transact-SQL) ( ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/bc806b71-cc55-470a-913e-c5f761d5c4b7.htm )
Execute a character string
{ EXEC | EXECUTE } 
( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
[ AS { LOGIN | USER } = ' name ' ]
[;]


—ообщение было отредактировано: 17 май 12, 16:42
17 май 12, 16:42††††[12571635]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
можно просто дать роли право на select в базе и забыть про скрипт как об "кошмарном сне"
17 май 12, 18:47††††[12572766]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
alexeyvg
Member

ќткуда: Moscow
—ообщений: 31984
Devel80
сколько лет уже занимаюсь программированием, нигде про это не читал.
:-)
aleonov
можно просто дать роли право на select в базе и забыть про скрипт как об "кошмарном сне"
¬ смысле, забить на права???
17 май 12, 19:04††††[12572854]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
alexeyvg
Devel80
сколько лет уже занимаюсь программированием, нигде про это не читал.
:-)
aleonov
можно просто дать роли право на select в базе и забыть про скрипт как об "кошмарном сне"
¬ смысле, забить на права???



на "ѕ–ј¬ј" забивать не нужно, просто сделать наоборот - дать вначале права на все объекты, а потом отобрать на то что пользователь не должен видеть :-) таким образом меньше телодвижений совершаетс€ (см. пример внизу)


пример.

USE [My]
GO
CREATE ROLE [Developer]
GO
CREATE LOGIN [dev1] WITH PASSWORD=N'ÂCÍШ¨–Ð쵚ïd@CGñ„Eà/x¢÷yL–Jäm'
, DEFAULT_DATABASE=[My], DEFAULT_LANGUAGE=[us_english]
, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

CREATE USER [dev1] FOR LOGIN [dev1]
GO

EXEC sp_addrolemember N'Developer', N'dev1'
GO

create table mytable (id int)
go

setuser 'dev1' -- change user context
GO

SELECT * FROM MyTABLE -- Permission denied !
GO

SETUSER -- go back to sa
go

GRANT SELECT TO [dev1] -- giving select permission to all tables
GO

setuser 'dev1'
GO

SELECT * FROM MyTABLE -- checking if it works
GO

SETUSER -- go back to sa
go


denY SELECT TO [dev1] -- remove permission to select for 'mytable'
GO

setuser 'dev1' -- change user back to 'dev1'
GO

SELECT * FROM MyTABLE -- checking, permission denied!
GO
18 май 12, 11:59††††[12575785]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Glory
Member

ќткуда:
—ообщений: 104751
aleonov
на "ѕ–ј¬ј" забивать не нужно, просто сделать наоборот - дать вначале права на все объекты, а потом отобрать на то что пользователь не должен видеть :-) таким образом меньше телодвижений совершаетс€ (см. пример внизу)

ќткуда меньше телодвижений, если изначально у пользовател€ никаких прав нет ?
18 май 12, 12:02††††[12575808]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
Glory
aleonov
на "ѕ–ј¬ј" забивать не нужно, просто сделать наоборот - дать вначале права на все объекты, а потом отобрать на то что пользователь не должен видеть :-) таким образом меньше телодвижений совершаетс€ (см. пример внизу)

ќткуда меньше телодвижений, если изначально у пользовател€ никаких прав нет ?


почитай самый первый пост. € дал совет на тот случай когда объекты в базе не €вл€ютс€ статичными, т.е. добавл€ютс€ новые процедуры, таблицы, у мен€ например два раза в год в базу добавл€етс€ около 200 новых объектов. раньше делал как автор этого топика, а потом установил права на роль и все !
18 май 12, 12:10††††[12575888]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Glory
Member

ќткуда:
—ообщений: 104751
aleonov
почитай самый первый пост. € дал совет на тот случай когда объекты в базе не €вл€ютс€ статичными, т.е. добавл€ютс€ новые процедуры, таблицы, у мен€ например два раза в год в базу добавл€етс€ около 200 новых объектов. раньше делал как автор этого топика, а потом установил права на роль и все !

ƒа бред там написан
≈сли нужны права на 1 таблицу из 100, то зачем выдавать права на 100 таблиц и потом запрещать на 99, если изначально на все 100 таблиц нет прав
18 май 12, 12:15††††[12575933]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Glory
Member

ќткуда:
—ообщений: 104751
ј автору темы нужно открыть дл€ себ€ роли, как контейнеры наборов прав
18 май 12, 12:17††††[12575945]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
Glory
aleonov
почитай самый первый пост. € дал совет на тот случай когда объекты в базе не €вл€ютс€ статичными, т.е. добавл€ютс€ новые процедуры, таблицы, у мен€ например два раза в год в базу добавл€етс€ около 200 новых объектов. раньше делал как автор этого топика, а потом установил права на роль и все !

ƒа бред там написан
≈сли нужны права на 1 таблицу из 100, то зачем выдавать права на 100 таблиц и потом запрещать на 99, если изначально на все 100 таблиц нет прав


хе-хе, разный уровень воспри€ти€.. :-) а если наоборот , не нужны права на одну таблицу из ста ??
18 май 12, 12:26††††[12576036]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Glory
Member

ќткуда:
—ообщений: 104751
aleonov
хе-хе, разный уровень воспри€ти€.. :-) а если наоборот , не нужны права на одну таблицу из ста ??

“огда есть другие контейнеры - схемы называютс€
18 май 12, 12:28††††[12576053]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
Glory
aleonov
хе-хе, разный уровень воспри€ти€.. :-) а если наоборот , не нужны права на одну таблицу из ста ??

“огда есть другие контейнеры - схемы называютс€


есть да, но они добавл€ют дополнительные сложности в разработке.
18 май 12, 12:33††††[12576108]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Glory
Member

ќткуда:
—ообщений: 104751
aleonov
есть да, но они добавл€ют дополнительные сложности в разработке.

јга. ј требовани€ “« к структуре тоже.
Ѕыла бы одна таблица дл€ всех данных - всем было бы хорошо
18 май 12, 12:35††††[12576131]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
√авриленко —ергей јлексеевич
Member

ќткуда:
—ообщений: 37254
aleonov
есть да, но они добавл€ют дополнительные сложности в разработке.
ѕисать вместо "dbo" больше букв?
18 май 12, 12:35††††[12576138]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
√авриленко —ергей јлексеевич
aleonov
есть да, но они добавл€ют дополнительные сложности в разработке.
ѕисать вместо "dbo" больше букв?



ну насмешили.. похоже что вы никогда не имели дело с большими проектами.
18 май 12, 13:00††††[12576404]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
√авриленко —ергей јлексеевич
Member

ќткуда:
—ообщений: 37254
aleonov
ну насмешили.. похоже что вы никогда не имели дело с большими проектами.
≈ще диагнозы будут?
18 май 12, 13:02††††[12576423]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Glory
Member

ќткуда:
—ообщений: 104751
aleonov
ну насмешили.. похоже что вы никогда не имели дело с большими проектами.

Ќу конечно. “олько вы наверное имели дело.
¬сем остальным хватает пары объектов.
18 май 12, 13:02††††[12576424]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
pkarklin
Member

ќткуда: ћосква (ћуром)
—ообщений: 74930
aleonov
ну насмешили.. похоже что вы никогда не имели дело с большими проектами.


ƒа мы тут все кроме "Hello, Word!" ничего в своей жизни не писјли...

¬от с ¬ашим приходом теперь все наладитс€.
18 май 12, 13:04††††[12576451]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
извините, никого не хотел обидеть.. что касаетс€ много букв, разработчику баз данных не лень написать больше букв. проблема зачастую в том коде который вызывает процедуры.
18 май 12, 13:05††††[12576452]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
pkarklin
aleonov
ну насмешили.. похоже что вы никогда не имели дело с большими проектами.


ƒа мы тут все кроме "Hello, Word!" ничего в своей жизни не писјли...

¬от с ¬ашим приходом теперь все наладитс€.


хе-хе , а вас то каким боком зацепило ? :-)
18 май 12, 13:06††††[12576463]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
pkarklin
Member

ќткуда: ћосква (ћуром)
—ообщений: 74930
aleonov
хе-хе , а вас то каким боком зацепило ? :-)


¬ отличие от ¬ас, € знаю, какими проектами занималс€ и занимаетс€ √авриленко —ергей јлексеевич.
18 май 12, 13:07††††[12576473]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
aleonov
Member

ќткуда:
—ообщений: 96
√авриленко —ергей јлексеевич
aleonov
есть да, но они добавл€ют дополнительные сложности в разработке.
ѕисать вместо "dbo" больше букв?


кстати, если использовать схемы, то достаточно только имени процедуры/таблицы
18 май 12, 13:09††††[12576486]     ќтветить | ÷итировать —ообщить модератору
 Re:  ак программно выдать права на объекты SQL  [new]
Ken@t
Member

ќткуда: 大地
—ообщений: 3265
aleonov
√авриленко —ергей јлексеевич
пропущено...
ѕисать вместо "dbo" больше букв?


кстати, если использовать схемы, то достаточно только имени процедуры/таблицы

Ѕольше этого никому не говорите.

¬ первую очередь будет просматриватьс€ схема пользовател€, затем уже иные схемы доступные оному.
18 май 12, 14:11††††[12577048]     ќтветить | ÷итировать —ообщить модератору
“опик располагаетс€ на нескольких страницах: [1] 2   вперед  Ctrl      все
¬се форумы / Microsoft SQL Server ќтветить