我在一个数据库上有两个 SQL Server 用户帐户,它们在INSERT / UPDATE / DELETE. SQL Server 版本为 2008 R2(10.50.4042,64 位)。
UserA可以执行这些命令(在任何表上)。它是一个 SQL Server“本地”帐户(SQL Server 登录名,而不是本地服务器上的 Windows 帐户)。
DOMAIN\UserB,不能。它来自 Windows AD 帐户。它是数据库服务器上管理员组的成员。
它得到错误:
对象“TheTable”、数据库“TheDb”、架构“dbo”的插入/更新/删除权限被拒绝
据我所知,这两个账户的角色是一样的。
这些角色之一具有INSERT/UPDATE/DELETE对表的权限。
帐户不是角色的成员db_denydatawriter。
我试图为 UserB 明确授予权限:
GRANT SELECT, UPDATE, DELETE, INSERT on TheTable TO [DOMAIN\UserB]
Run Code Online (Sandbox Code Playgroud)
但我仍然有错误。
如果我sysadmin在 UserB 上添加角色,当然它有权限,但我不想让它有这个角色。
所以,对我来说,唯一的区别是local account / Windows AD account。
您知道一种获取有关潜在 Windows AD 帐户特定权限的更多信息的方法吗?
经过更多研究,我怀疑UserB具有未经许可的角色。这个Stack Overflow 答案让我走上了正轨。这是一个查询,显示:
-- Users that are members …Run Code Online (Sandbox Code Playgroud)