我们需要创建一个只能选择 4 个特定表的新用户。为此,我们创建登录名并将其映射到所需的数据库:
USE [master]
GO
CREATE LOGIN [pos] WITH PASSWORD=N'XXXX', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [TARGETED_DB_NAME]
GO
CREATE USER [pos] FOR LOGIN [pos]
GO
之后,用户可以执行任何 DML 语句,而他除了公共角色之外没有其他权限。我们检查了公共角色权限、服务器权限等,但找不到用户可以看到数据库所有表的原因。
当我们在同一实例的另一个数据库上创建用户时,问题不存在。
知道为什么登录 pos 会获得这样的特权吗?
以下查询将有助于深入了解特定用户直接或间接获得的权限,根据结果,您可以分析/识别问题的原因。