如何查询ASE Sybase数据库的所有用户、创建日期及分配角色
获取ASE Sybase用户列表、创建日期及角色的方法
1. 基础查询(含登录创建日期+服务器角色)
要获取登录账户的创建日期,直接从master.dbo.syslogins的crdate字段读取即可,结合系统表关联可同时拿到分配的角色:
SELECT l.name AS 登录名, CONVERT(VARCHAR(20), l.crdate, 120) AS 创建日期, u.name AS 数据库用户名, r.name AS 服务器角色 FROM master.dbo.syslogins l LEFT JOIN master.dbo.syssrvrolemembers srm ON l.suid = srm.suid LEFT JOIN master.dbo.sysroles r ON srm.srid = r.srid LEFT JOIN 目标数据库名.dbo.sysusers u ON l.suid = u.suid ORDER BY l.name, r.name;
2. 数据库级角色查询
如果需要获取用户在特定数据库中的角色,需查询对应数据库的sysmembers和sysusers表:
USE 目标数据库名; GO SELECT l.name AS 登录名, CONVERT(VARCHAR(20), l.crdate, 120) AS 创建日期, u.name AS 数据库用户名, g.name AS 数据库角色 FROM master.dbo.syslogins l JOIN sysusers u ON l.suid = u.suid LEFT JOIN sysmembers m ON u.uid = m.memberuid LEFT JOIN sysusers g ON m.groupuid = g.uid WHERE g.isrole = 1 -- 筛选出角色账户 ORDER BY l.name, g.name;
关键说明
syslogins.crdate就是登录账户的创建时间,之前没找到可能是忽略了这个字段,或者混淆了数据库用户(sysusers.crdate)和登录账户的创建日期。sp_display主要用于展示数据库对象(如表、存储过程)的信息,并不适合查询用户-角色关联关系,直接关联系统表是更可靠的方式。- 如果需要遍历所有数据库的用户角色,可以结合
sp_msforeachdb存储过程实现批量查询。
内容的提问来源于stack exchange,提问作者Sanchit
相关产品推荐
相关产品推荐

