我有一个大型 SQL Server 2008 数据库,其中包含许多表、存储过程和函数。这个数据库也有几个用户。
如何让每个用户在通过 Management Studio 连接到数据库后,只能在对象浏览器中看到他/她的相关对象,但可以执行函数、存储过程和选择其他用户拥有的表?
我有一个大型 SQL Server 2008 数据库,其中包含许多表、存储过程和函数。这个数据库也有几个用户。
如何让每个用户在通过 Management Studio 连接到数据库后,只能在对象浏览器中看到他/她的相关对象,但可以执行函数、存储过程和选择其他用户拥有的表?
听起来您需要使用一些数据库模式来分离用户对象:
http://msdn.microsoft.com/en-us/library/ms190387.aspx
数据库模式只不过是数据库中对象的集合。DBO 和 SYS 是 SQL Server 中常见的内置架构。您可以创建一个包含用户对象(表、函数、存储过程......)的模式,并为该模式(所有者、读者......)分配安全级别。这些尤其有助于对象级管理。
“元数据可见性”决定了用户可以看到哪些对象。基本上,他们自己的对象(登录名、用户)或他们拥有的权限(表、代码等)。
您不能隐藏他们具有选择/执行权限的对象。简单的。
如果使用模式在 SSMS 中创建对象分组以“整理”John 和 Sarah 的视图,您可以做什么。但是,在我看来,这是对模式的不良使用