如何让用户只能访问特定的数据库(MSSQL)

背景

客户的SQL Server实例上有多个厂商的数据库,每个数据库由各自的进行厂进行商维护,

为了限定不同厂商的维护人员只能访问自己的数据库,现需要给各个厂商限定权限,让他们登录SQL Server只能看到授权的数据库而无法看到其他数据库。

 

解决方案

1.先给不同的厂商创建不同的登录名(如下以一个厂商为例)

image

 

 

2.将登录名加入到public服务器角色中,然后点击确定

image

 

3.将public服务器角色的属性——>安全对象中取消查看所有数据库的权限

或者执行如下SQL:

REVOKE VIEW ANY DATABASE TO [public]

 

4.将待授权的数据库的dbowner指派给该用户

Use [xjcs]
go
EXEC dbo.sp_changedbowner N'provider1'

 

 

此时用'provider1'登录SQL Server,便只能看到指定的用户数据库了(系统数据库除外)

image

 

 

 

 

说明:

我之前希望在第2个步骤中设置登录名的用户映射来实现这个需求,如下图,但没有效果,登录到SQL Server后还是无法看到用户数据库,

所以才采用上述方法:

image

image

posted @   i6first  阅读(9484)  评论(6编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示