如何防止用户在 SQL Server management studio 中看到不属于他的数据库?

How to prevent user to see databases not owned by him in SQL Server management studio?

当我的 SSMS(SQL 服务器管理工​​作室)连接到我的共享托管数据库服务器时,所有数据库(包括不属于我的数据库)都列在左窗格(SSMS 的资源管理器)中。

理想情况下,我只想在此处显示我拥有的数据库。显示别人的数据库是一个安全漏洞,虽然我没有权限查看他们的数据。至少我知道它们的数据库名称。

是否可以通过配置我的 SSMS 或要求服务提供商的支持团队更改他们的设置(我认为应该在服务器端配置)来实现这一点?

谢谢。

您可以通过架构权限实现这一点。查看此线程以获取更多信息。

https://dba.stackexchange.com/questions/53509/setting-user-permissions-for-different-sql-server-schemas

我通过 运行 下面的 SQL 解决了这个问题。

DENY VIEW any DATABASE TO PUBLIC;
GRANT CREATE DATABASE TO PUBLIC;
ALTER AUTHORIZATION ON DATABASE::testdb TO testuser;