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

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

  1. 我的数据库
  2. 你的数据库
  3. 私有数据库
  4. 真正的私人数据库

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

出于安全原因,我们不希望用户看到除他们映射到的数据库之外的任何数据库。

有帮助吗?

解决方案

这个博客 讨论隐藏 SQL 2000 和 SQL 2005 数据库的方法。

其他提示

在让我的客户与已确定的资源进行斗争之后,我做了一些测试并创建了 这篇博文 有关如何使其发挥作用的更多背景信息和说明。

其不足之处在于:

use master
go
deny VIEW any DATABASE to login1
go

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top