如何找到对 SQL Server Express 具有系统管理员访问权限的 Windows 用户和组?

Posted

技术标签:

【中文标题】如何找到对 SQL Server Express 具有系统管理员访问权限的 Windows 用户和组?【英文标题】:How do I find Windows users and groups who have sysadmin access to SQL Server Express? 【发布时间】:2018-10-12 22:33:38 【问题描述】:

是否可以针对 SQL Server Express 数据库运行查询以确定哪些 Windows 用户和组已被授予系统管理员权限?

我有一个应用程序安装程序,它正在 Windows 10 笔记本电脑上安装 SQL Server Express,然后通过使用 Windows 身份验证进行连接来创建数据库。

为了实现这一点,我们一直说登录用户必须是本地管理员。不幸的是,在最近一次 Windows 更新后,“管理员”用户消失了。

很遗憾,SQL Server Express 安装已禁用“sa”,因此我们无法使用它进行连接。那么问题来了,哪些登录名或组在数据库中具有 sysadmin 权限?

【问题讨论】:

【参考方案1】:

您可以使用sys.server_principals 表,它包含所有用户的列表以及可能有用的有用信息。

 select * from master.sys.server_principals

如果要根据用户的权限组列出用户,请使用sys.server_role_members 表。

select * from master.sys.server_role_members

加入他们以列出所有已被授予系统管理员权限的用户:

select * from master.sys.server_principals sp
JOIN master.sys.server_role_members sr ON sr.member_principal_id = sp.principal_id
WHERE 
    sr.role_principal_id = 3

【讨论】:

以上是关于如何找到对 SQL Server Express 具有系统管理员访问权限的 Windows 用户和组?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 MS SQL Server 2008 的端口?

无法从使用 Express.js 和 SQL Server 创建的 api 获得任何响应

sql server express 权限

如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)

您如何使用 SQL Server CE 和 SQL Server 2008 Express?

如何将远程 SQL Server Express 数据库的部分副本复制到本地 SQL Server Express 数据库?