【问题标题】:Limit Database List to Ones With Permission SQL Server将数据库列表限制为具有 SQL Server 权限的列表
【发布时间】:2010-09-17 02:36:37
【问题描述】:

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

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

  1. 我的数据库
  2. 你的数据库
  3. 私有数据库
  4. ReallyPrivateDb

如果您通过仅具有“YourDatabse”权限的帐户进行连接,您仍会看到所有其他数据库的列表,尝试查询将授予“选择”权限被拒绝或类似错误。

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

【问题讨论】:

    标签: sql-server ssms database-permissions database-security


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在让我的客户对已确定的资源进行了挣扎后,我进行了一些测试并创建了 this blog posting,并提供了更多背景信息和有关如何使其发挥作用的说明。

      【讨论】:

      • 看来缺点是一次只能有一个用户可以成为 dbo。因此,客户端只能有 1 个数据库用户……对吗?
      【解决方案3】:

      简称:

      use master
      go
      deny VIEW any DATABASE to login1
      go
      

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

      【讨论】:

      • 其实这不是一路走来的,博客文章,有点难以理解,但关键是用户必须是相关文章的DBO
      • 如果您可以在 SQL Server Management Studio 中右键单击一个数据库并说为此配置文件只显示此数据库,那就太好了。但这永远不会那么容易。我的场景是,当我使用 SQL Server Management Studio 在 Godaddy 登录我的 SQL Server 时,我看到了数百个其他数据库,并且每次都必须向下滚动。下次我将我的数据库命名为“_AAAMydatabase”
      猜你喜欢
      • 2011-06-07
      • 2011-06-07
      • 1970-01-01
      • 2014-03-12
      • 2014-09-30
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多