2014-06-10 72 views
0

我要写剧本中我已创建登录和用户给予权限的用户,并给予Execute on访问该用户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 

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

注:

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

回答

0

这似乎是与SQLEXPRESS版本的问题,当我运行相同的: 我一直在使用sp_addrolemember

exec sp_addrolemember 'QGtestrole','QGtestlogin' 

,但仍然得到错误添加用户角色成员代码在我的实际开发数据库上执行,QGtestlogin能够执行存储过程。