SSMS Intellisense依赖什么权限?

我们有一台运行SQL Server 2008的服务器。 当我们用一些loginSSMS(来自SSMS 2008)连接到它时,Intellisense可用。 对于其他人则不是。 有问题的login连接到同一个数据库,除了用于连接的login名之外,其他任何内容都不会在SSMS会话之间改变。

如果我作为db_owner成员的login进行连接,则Intellisense将起作用。 如果我作为不在db_owner中但具有“查看定义”特权的login进行连接,则Intellisense将起作用。 如果我以不在db_owner或具有“查看定义”特权的login身份进行连接,则Intellisense不起作用。

所以我试图授予第三个login“视图定义”权限的数据库,认为他们会得到Intellisense。 没有运气。 第三次login可以访问另外两个数据库。 在所有三个数据库中,此login名是db_datareaderangular色的成员,但没有其他angular色(也没有“视图定义”特权)。 在这两个其他数据库中,此login名获得Intellisense。 在主数据库中,它不是。

在我看来,有一些每个数据库和每个login设置/权限,允许智能感知,但到目前为止,我一直无法追查下来。

有任何想法吗?

这是权限和“查看定义”。 由于元数据可见性,您无法查看您没有权限的内容的定义。 所以,对于权限…

db_owner也是CONTROL权限的包装 ,类似于ddl_admin和其他权限。 此外

要查看实际权限,您需要查询sys.database_permissions 。 例如, GRANT ALTER SCHEMA是分开的固定数据库angular色(ALTER ANY SCHEMA是ddl_admin当然)。

这比以前更复杂:-)

仅供参考:您确实得到了像GRANT ALTER TRACE这样的有用的东西,它允许configuration程序没有系统pipe理员抱歉CONTROL SERVER