Sql server 将数据库列表限制为具有SQL Server权限的数据库列表

Sql server 将数据库列表限制为具有SQL Server权限的数据库列表,sql-server,ssms,database-permissions,database-security,Sql Server,Ssms,Database Permissions,Database Security,默认情况下,如果您通过可以访问10个数据库中的1个数据库的帐户连接到远程SQL Server。您仍将在对象资源管理器中看到所有其他数据库,显然由于权限的限制,您无法实际查询它们,但您可以看到它们的名称 我听说有一种方法可以禁用这种行为,但我一直找不到答案,有人知道怎么做吗?举个例子,我有一个名为MyDbServer的SQL Server,它有4个数据库 我的数据库 你的数据库 私有数据库 真正的私有数据库 如果您通过仅具有“YourDatabase”权限的帐户进行连接,您仍将看到所有其他数据库的

默认情况下,如果您通过可以访问10个数据库中的1个数据库的帐户连接到远程SQL Server。您仍将在对象资源管理器中看到所有其他数据库,显然由于权限的限制,您无法实际查询它们,但您可以看到它们的名称

我听说有一种方法可以禁用这种行为,但我一直找不到答案,有人知道怎么做吗?举个例子,我有一个名为MyDbServer的SQL Server,它有4个数据库

  • 我的数据库
  • 你的数据库
  • 私有数据库
  • 真正的私有数据库
  • 如果您通过仅具有“YourDatabase”权限的帐户进行连接,您仍将看到所有其他数据库的列表,尝试查询将授予“select”权限被拒绝或出现类似错误

    出于安全考虑,我们不希望用户看到他们映射到的数据库以外的任何数据库。

    讨论了隐藏SQL 2000和SQL 2005数据库的方法。

    其缺点是:

    use master
    go
    deny VIEW any DATABASE to login1
    go
    

    其中login1是您想要限制的登录帐户。

    在让我的客户与已识别的资源发生冲突后,我做了一些测试,并创建了更多的上下文和说明,说明如何使其工作。

    实际上,这并没有完全实现,博客文章有点难理解,但关键是,用户必须是本文的DBO。如果在SQLServerManagementStudio中,您可以右键单击数据库,并对该配置文件说“仅显示此数据库”,那就太好了。但这永远不会那么容易。我的情况是,当我使用SQLServerManagementStudio登录Godaddy的SQLServer时,我会看到数百个其他数据库,每次都要向下滚动。下次我将把我的数据库命名为“AAAMydatabase”,它的缺点是一次只能有一个用户是dbo。因此,客户端只能有1个数据库用户。。。是这样吗?