2014-06-10 69 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能夠執行存儲過程。