SQL Server存储过程和权限

kur*_*_89 7 sql t-sql sql-server permissions

是否可以拒绝SQL Server中所有内容的权限(例如,选择,插入等)并通过存储过程提供临时权限.我想只使用存储过程来访问sql数据库中的数据.

这可能还是有另一种方式?

gbn*_*gbn 6

这是一个支持我的SQL Server的好模式.

基本上,如果proc和表具有相同的所有者(通常是dbo),那么对存储过程具有权限的人根本不需要任何表权限.它被称为所有权链接

注意:在这种情况下,不会检查表的权限,因此也会忽略显式的"DENY权限"(DENY与"no permissions"不同)

这同样适用于视图,函数等(例如视图调用表,proc调用视图,......)


SQL*_*ace 5

是的,这是调用ownership chaining,如果你给proc执行权限,用户将能够执行proc并且它将工作,他将获得数据

如果他然后尝试从SSMS中的表中进行选择则不起作用(假设他不在数据阅读器或更高的角色中)

请记住,动态SQL中断ownership chaining,如果存储过程中有动态SQL,则在这种情况下需要额外的权限

  • "所有权链接":http://msdn.microsoft.com/en-us/library/ms188676.aspx (3认同)