实验环境;

1 创建一个schema

]

 

2 创建两个表,一个视图,一个存储过程

]
)
 Sales.CustomerContacts.Customer_ID
END

 

3 创建一个login


 

这个时候使用SaleA登录MyDB是没有任何权限的。执行下列命令会得到4个错误

 Sales.GetContact

错误信息:
Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object 'Customer', database 'MyDB', schema 'Sales'.
Msg 229, Level 14, State 5, Line 2
SELECT permission denied on object 'CustomerContacts', database 'MyDB', schema 'Sales'.
Msg 229, Level 14, State 5, Line 3
SELECT permission denied on object 'ContactList', database 'MyDB', schema 'Sales'.
Msg 229, Level 14, State 5, Procedure GetContact, Line 1
EXECUTE permission denied on object 'GetContact', database 'MyDB', schema 'Sales'.

但是你如果赋予SaleA执行存贮过程的权限,你就可以得到访问到sp所对应的视图,视图所对应的表的内容了。

我开始是以为SaleA的权限应该包含试图的select权限的。唉,真是实践一下,才能知道不是这个样子的。

这样的设计应该是为了了管理的方便,如果需要级联权限,肯定会晕掉的,这样的简洁明了的方式之值得我们学习和应用到其他的设计中去的

 

相关文章:

  • 2021-08-18
  • 2021-09-08
  • 2022-12-23
  • 2022-02-21
  • 2021-11-14
  • 2022-12-23
  • 2021-12-31
猜你喜欢
  • 2021-12-21
  • 2022-12-23
  • 2022-12-23
  • 2021-11-03
  • 2021-10-08
  • 2022-01-25
相关资源
相似解决方案