需要通过角色授予用户权限

时间:2014-06-10 06:35:59

标签: sql sql-server tsql login sql-server-2008-r2

我必须编写脚本,我在其中创建了登录和用户,并且只允许Execute on访问此USER以仅执行单个存储过程SP_SELECTDEPT,但不能直接通过role执行。因此,这样用户将只能执行此存储过程,但它无法正常工作。

到目前为止,我已经完成了。

BEGIN TRANSACTION 
USE master
CREATE LOGIN QGtestlogin WITH PASSWORD = 'test123', CHECK_POLICY=off
GO
USE DEPT
CREATE USER QGtestlogin FOR LOGIN QGtestlogin
go

CREATE ROLE QGtestrole AUTHORIZATION QGtestlogin
GO

GRANT EXECUTE ON SP_SELECTDEPT TO QGtestrole
go

if @@ERROR > 0 
begin 
rollback transaction 
end 
else begin 
commit transaction 
end 

但是当我使用这个新创建的用户登录时,它甚至没有显示要执行的存储过程。

注意: 我已使用sp_addrolemember

将用户添加到角色成员
exec sp_addrolemember 'QGtestrole','QGtestlogin'

但仍然收到错误:

Msg 229, Level 14, State 5, Procedure SP_SELECTDEPT, Line 14
The SELECT permission was denied on the object 'Dept', database 'DEPT', schema 'dbo'.

1 个答案:

答案 0 :(得分:0)

这似乎是SQLEXPRESS版本的问题,当我在我的实际开发数据库上运行相同的代码时,它们会被执行并且QGtestlogin能够执行存储过程。