咨询:如何查询每个SQL用户所使用的身份验证模式
查询SQL Server用户身份验证模式
以下是符合你需求的SQL查询语句,可直接输出指定格式的结果:
SELECT name + ' - 身份验证模式 - ' + CASE WHEN authentication_type = 1 THEN 'Windows' WHEN authentication_type = 2 THEN 'SQL Login' ELSE '其他' END AS 验证模式信息 FROM sys.server_principals WHERE type IN ('S', 'U') -- S=SQL登录, U=Windows登录,过滤非目标类型的安全主体 ORDER BY name;
语句说明:
- 依赖
sys.server_principals系统视图:该视图存储SQL Server实例级所有安全主体的核心信息,包括登录名、身份验证类型等。 authentication_type字段映射:1对应Windows身份验证,2对应SQL Server身份验证(即SQL Login)。type筛选逻辑:S代表SQL登录账户,U代表Windows登录账户,通过此条件仅返回你关注的两类用户,排除系统角色、证书映射账户等无关主体。- 字符串拼接:通过
+运算符将用户名、固定文本和验证类型组合成你需要的输出格式。
额外建议:
- 若需排除系统内置登录账户(如
sa、NT SERVICE开头的账户),可在WHERE子句中补充过滤条件:AND name NOT LIKE 'NT SERVICE\%' AND name NOT LIKE 'NT AUTHORITY\%' AND name != 'sa' - 如果需要关联数据库级用户和登录名的对应关系,可结合
sys.database_principals视图进行关联查询,但仅针对身份验证模式需求,服务器级登录名的信息已足够。
内容的提问来源于stack exchange,提问作者user15265211
相关产品推荐
相关产品推荐

