重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题:
sqlserver 中 sys.syslogins与 sys.sql_logins 区别
[打印本页]
作者:
郑全
时间:
2026-3-25 15:46
标题:
sqlserver 中 sys.syslogins与 sys.sql_logins 区别
本帖最后由 郑全 于 2026-3-25 15:50 编辑
这两个都是查登录名(Login)的系统视图,但级别、用途、兼容性完全不同,我用最直白的方式给你讲透。
一句话核心区别
sys.syslogins
旧版兼容视图(SQL 2000 遗留)
服务器级别,能查所有登录名(Windows + SQL 认证)
不推荐正式使用
sys.sql_logins
新版官方标准视图
只查 SQL Server 身份验证的登录名(密码登录)
字段更全、更安全、官方推荐
详细对比(一看就懂)
1. sys.syslogins
来源:旧系统表 syslogins 包装而来
范围:所有登录名
Windows 登录名
Windows 组登录名
SQL 身份验证登录名
类型:兼容性视图
缺点:字段少、信息旧、未来可能废弃
用途:老脚本兼容
查询示例:
SELECT
*
FROM
sys
.
syslogins
2. sys.sql_logins
来源:新版目录视图
范围:仅 SQL 身份验证登录名(带密码的账号)
✅ sa
✅ 你用 CREATE LOGIN 创建的密码账号
类型:官方推荐
优点:
字段多(密码策略、过期状态、是否锁定等)
安全、准确
新版本一直支持
查询示例:
SELECT
*
FROM
sys
.
sql_logins
最关键区别(必记)
特性
sys.syslogins
sys.sql_logins
能查 Windows 登录
✅ 能
❌ 不能
能查 SQL 密码登录
✅ 能
✅ 能
是否新版推荐
❌ 旧版
✅ 是
密码安全字段
❌ 无
✅ 丰富
未来兼容性
⚠️ 可能弃用
✅ 长期支持
你应该用哪个?
✅ 日常开发、DBA 运维 → 一律用 sys.sql_logins
实用查询(直接复制用)
查所有登录名(含 Windows)
SELECT
*
FROM
sys
.
syslogins
只查 SQL 密码登录(推荐)
SELECT
name
,
is_policy_checked
,
is_expiration_checked
,
is_locked
FROM sys.sql_logins
查 sa 账号状态
sql
SELECT
*
FROM
sys
.
sql_logins
WHERE
name
=
'sa'
总结
sys.syslogins = 旧版 → 查所有登录(Windows+SQL)
sys.sql_logins = 新版 → 只查 SQL 密码登录(你创建的账号)
优先用 sys.sql_logins
欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2