![SSMS Intellisense 依赖哪些权限?](https://linux22.com/image/538849/SSMS%20Intellisense%20%E4%BE%9D%E8%B5%96%E5%93%AA%E4%BA%9B%E6%9D%83%E9%99%90%EF%BC%9F.png)
我们有一台运行 SQL Server 2008 的服务器。当我们使用 SSMS 和一些登录名(来自 SSMS 2008)连接到它时,Intellisense 可用。对于其他登录名则不可用。有问题的登录名连接到同一个数据库,除了用于连接的登录名之外,SSMS 会话之间没有其他变化。
如果我以 db_owner 成员的登录名进行连接,Intellisense 就会起作用。如果我以不属于 db_owner 但具有“查看定义”权限的登录名进行连接,Intellisense 就会起作用。如果我以既不属于 db_owner 也不具有“查看定义”权限的登录名进行连接,Intellisense 就不会起作用。
因此,我尝试授予第三个登录名对该数据库的“查看定义”权限,以为他们会获得 Intellisense。没有运气。第三个登录名可以访问其他两个数据库。在这三个数据库中,此登录名是 db_datareader 角色的成员,但没有其他角色(也没有“查看定义”权限)。在这两个其他数据库中,此登录名获得了 Intellisense。在主数据库中,没有。
在我看来,每个数据库和每个登录都有一些允许 Intellisense 的设置/权限,但到目前为止我还无法追踪它。
有任何想法吗?
答案1
它既是权限,也是“查看定义”。您无法查看您没有权限的内容的定义,因为元数据可见性。那么,对于权限...
db_owner 也是一个包装器对于 CONTROL 权限,类似于 ddl_admin 和其他权限。此外
查看实际的您需要查询的权利sys.database_permissions。 例如,授予更改架构与固定数据库角色分离(当然,ALTER ANY SCHEMA 是 ddl_admin)。
它比以前更复杂了:-)
仅供参考:您确实获得了一些有用的东西,例如 GRANT ALTER TRACE,它允许分析器在没有系统管理员的情况下控制服务器