我需要限制用户对SELECT,INSERT,UPDATE和DELETE的访问权限,以便用户只能使用我提供的存储过程来管理数据。
所以,例如
SELECT * FROM Table1
应该返回
The SELECT permission was denied on the object 'Table1'
但是,如果存储过程SelectTable1定义为
CREATE PROCEDURE SelectTable1
AS
BEGIN
SELECT * FROM Table1
END
(真实的包含过滤和参数,所以它没有意义,如上所述)
用户应该成功执行它并获取结果集。
但显然,我没有成功实现这组权限。有人能指点我一些具体的教程吗? MSDN不是很有帮助。
数据库是SQL Server 2012,所有对象(表和存储过程)都是自定义架构。
答案 0 :(得分:3)
您可以使用GRANT EXEC在特定程序或schemas或数据库上执行此操作。
以下示例授予存储过程的EXECUTE权限 HumanResources.uspUpdateEmployeeHireInfo到一个名为的应用程序角色 Recruiting11。
USE AdventureWorks2012;
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
答案 1 :(得分:2)