业务场景:
需要给特定用户开放特定DB的权限,但是又不希望让他看到其他的DB.
解决方法:
1.DENY VIEW ANY DATABASE TO [USER] --首先关闭用户所有DB的查看权限
2.EXEC dbo.sp_changedbowner @loginame = N'USER' --修改特定DB的所有者为用户
这样一来用户登陆SSMS以后只能看到所有者是自己的DB.
一点补充:
1.如果针对的是表,那么Grant VIEW Definition on [TableName] TO [USER] 是标准做法。但是针对DB并没有Grant VIEW Definition on [DatabaseName]的语法。
2.sp_changedbowner 修改DB所有者,可以是单个用户,也可以是用户组。所以完全可以支持多个人访问。