我有一个在我的数据库 test_db 上设置了 db_datareader 数据库角色的帐户。
使用 SSMS 我使用此帐户(使用 SQL Server 身份验证)登录并打开一个新的查询窗口,以便通过执行以下查询来获取与 test_db 数据库的当前连接数:
select * FROM sys.databases sd LEFT JOIN sys.sysprocesses sp ON sd.database_id = sp.dbid
WHERE database_id = 6 AND LOGINAME IS NOT NULL
其中 database_id = 6 对应于 test_db。
此查询返回单行而不是多行。
但是,从 SSMS 如果我使用没有设置 db_datareader 的另一个帐户(使用 Windows 身份验证)登录,如果我从 SSMS 打开一个新的查询窗口并键入上面指示的相同查询,我将获得与 test_db 数据库的所有当前连接(更多超过一排)。
为什么?我需要获取到 test_db 数据库的所有当前连接,而不仅仅是当前用户登录的单个连接(具有 db_datareader 数据库角色集的只读帐户)