2013-09-04 4 views
2

Могу ли я установить разрешение на определенных столбцов в БД и предоставлять другим таким образом, что это прозрачно для пользователей, скажем у меня есть следующий грант:разрешений SQL Server в колонке невидимым для пользователей

GRANT SELECT ON [dbo].[DIM_Table1](Field1 , Field2 , Field4) TO [NDMRole] ; 
-- column Field3 is missing, it's prohibited to select for this user. 

если пользователь пытается сделать:

SELECT * from Dim_Table1 

она получит сообщение об ошибке сказав, что Field3 не разрешено выбирать. Есть ли способ сделать это поле невидимым для пользователя или каким-то образом сделать так, чтобы пользователь не получил ошибку.

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

ответ

0

Да, вы можете это сделать. Отъезд sp_column_privileges и Column Permission

sp_column_privileges [ @table_name = ] 'table_name' 
[ , [ @table_owner = ] 'table_owner' ] 
[ , [ @table_qualifier = ] 'table_qualifier' ] 
[ , [ @column_name = ] 'column' ] 
+0

Я понимаю, что я могу установить разрешения на колонке в соответствии, например, в вопросе, но как я могу убедиться, выберите * из таблицы работает, если некоторые из столбцов не разрешено разрешение? –

Смежные вопросы