我有一个假设,一些登录用户在某处有不正确的权限,即2个查询:
--correct, return all rows
EXECUTE AS LOGIN = 'USER1'
GO
SELECT * FROM syslogins
GO
REVERT
GO
--incorrect, return only 2 rows
EXECUTE AS LOGIN = 'USER2'
GO
SELECT * FROM syslogins
GO
REVERT
GO
总体而言,这两个用户与我所能找到的完全相同。在哪里可以找到不同的权限以及如何解决,以便USER2还能查看syslogins中的所有行?
从Metadata Visibility Configuration起尝试执行以下查询,但未返回任何结果。
SELECT name, object_id
FROM sys.tables
WHERE name = 'syslogins';
GO
来自sys.server_principals (Transact-SQL)的用户尝试使用以下查询代替SELECT * FROM syslogins
,但USER1作为USER2仍然有更多结果可用
SELECT *
FROM sys.server_principals AS pr
JOIN sys.server_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
grant view definition to USER2
也没有对大量查询进行任何更改