You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建仅可查看及读取指定数据库的SQL登录账号

如何让SQL Server登录账号仅可见授权的数据库

要实现登录账号仅能看到被允许读取的数据库,核心是调整数据库可见性权限——默认情况下所有登录账号通过public角色拥有VIEW ANY DATABASE权限,这会让他们看到服务器上所有数据库。具体操作步骤如下:

1. 创建目标登录账号(若尚未存在)

CREATE LOGIN [LimitedReader] WITH PASSWORD = 'YourStrongPasswordHere', CHECK_EXPIRATION = ON;

2. 撤销全局数据库可见权限

先移除该登录账号的VIEW ANY DATABASE权限,避免它看到所有数据库:

REVOKE VIEW ANY DATABASE TO [LimitedReader];

注意:如果public角色本身被授予了VIEW ANY DATABASE权限(默认配置),你也可以选择撤销public的这个权限,但这会影响所有未单独授权的登录账号,需谨慎操作:

REVOKE VIEW ANY DATABASE FROM PUBLIC;

3. 在目标数据库中创建用户并授予读取权限

以你想让用户访问的TargetDB为例,创建对应的数据库用户并加入db_datareader角色:

USE [TargetDB];
CREATE USER [LimitedReader] FOR LOGIN [LimitedReader];
ALTER ROLE db_datareader ADD MEMBER [LimitedReader];

4. 授予目标数据库的可见权限

最后给登录账号授予目标数据库的VIEW DEFINITION权限,这样它就能在SSMS或其他工具中看到这个数据库:

GRANT VIEW DEFINITION ON DATABASE::[TargetDB] TO [LimitedReader];

完成以上操作后,LimitedReader登录后只会看到TargetDB,其他数据库会被隐藏。需要注意:如果登录账号属于sysadmin等高权限角色,这些限制会失效,因为高权限角色拥有所有数据库的访问和可见权限。

内容的提问来源于stack exchange,提问作者ksaliya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:20:04